【问题标题】:React Native Firebase Date ComparisonReact Native Firebase 日期比较
【发布时间】:2021-08-05 10:31:36
【问题描述】:

我正在尝试获取用户加入的日期,该日期存在于 firebase 文档中:

我有这个功能可以查询登录用户并获取数据:

import { auth, firestore } from '../../firebase/fire';

const [userData, setUserData] = useState({});
const user = auth.currentUser;

const GetUserData = async() =>{
    const response = firestore.collection('users').doc(user.uid);
    const observer = response.onSnapshot(docSnapshot => {
        if( docSnapshot.exists ) {
            setUserData(docSnapshot.data());
          }
    }, err => {
      console.log(`Encountered error: ${err}`);
    });
    const unsub = firestore.collection('users').onSnapshot(() => {
        setUserData({});
    });
    unsub();        
}
useEffect(() => {
    GetUserData();
}, [])

这让我可以设置类似const joined = userData.joined;

控制台记录这给了我

  "nanoseconds": 0,
  "seconds": 1489615200,
}

现在可以通过.toDate() 将其转换为正常日期,但似乎不起作用。

我尝试了什么 像这样使用 toDate():

const joined = userData.joined.toDate();
console.log(joined);

我遇到了错误

TypeError: undefined is not an object (evaluating 'joined.toDate')

我的目的是让那个日期找出现在和那时之间的月差并显示出来。

【问题讨论】:

  • “似乎不起作用” 为什么不呢?您能否编辑您的问题以显示您尝试了什么、预期会发生什么以及会发生什么?
  • 添加了我尝试过的内容 + 我收到的错误。
  • 当你在上面调用toDate() 时,userData.joined 似乎没有值。您在哪里(或更准确地说:何时)运行该代码?您能否编辑您的问题以显示(当我们运行它时)重现问题的单个代码片段?

标签: javascript firebase react-native google-cloud-firestore


【解决方案1】:

设法获得通过购买的日期:

const joined = userData.joined;
const date = joined.toDate().toDateString();
console.log(date);

2017 年 3 月 16 日星期四

【讨论】:

    【解决方案2】:

    您提到控制台记录joined 日期会以秒和纳秒为单位提供输出。因此,您正在从 Firestore 获取数据。

    这个joined 时间戳可以使用toDate() 函数转换为日期。它非常适合我。当您收到错误时,在您的情况下,当您在其上调用 toDate() 函数时,userData.joined 可能没有任何价值。为此,正如 Frank van Puffelen 在评论部分中提到的,如果您可以编辑问题并包含运行该代码的位置和时间,那么将很容易重现以更详细的方式。

    接下来你提到你想得到现在和joined日期之间的月差。

    为此,有多种方法。我希望以下将是一个简单而简短的方法-

    运行以下命令安装date-fns 库。

    npm install -s date-fns

    然后按照代码示例-

    const differenceInMonths = require('date-fns/differenceInMonths');
    const today = new Date();
    const joined = userData.joined.toDate();
    const monthDiff= differenceInMonths(today,joined);
    console.log(monthDiff);
    

    【讨论】:

      猜你喜欢
      • 2021-12-03
      • 1970-01-01
      • 2022-11-06
      • 2011-12-31
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多