【问题标题】:How to convert firebase timestamp into date and time如何将firebase时间戳转换为日期和时间
【发布时间】:2016-10-27 05:41:05
【问题描述】:

我尝试从 firebase 时间戳获取日期和时间,如下所示:

 Date date=new Date(timestamp*1000);
 SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
 sfd.format(date);

但我得到的结果如下:

:02-02-48450 04:21:54
:06-02-48450 10:09:45
:07-02-48450 00:48:35

正如你所见,这一年与我们生活的不同。

所以,请帮我解决这个问题。

【问题讨论】:

  • timestamp 的值是多少?为什么要乘以?
  • 时间戳=1466769937914
  • 不要乘以 1000!
  • 对不起,这是我的错,它现在完美运行,实际上我是 android 的新手。
  • 您的意思是 Java 中的新功能。欢迎和愉快的旅行。

标签: android datetime timestamp


【解决方案1】:

我认为它有点晚但最简单的方法就是: (new Date(timestamp.toDate())).toDateString()

【讨论】:

【解决方案2】:

.toDate() 方法应该是你所需要的全部

您可能会喜欢文档here

作为额外的奖励,您可能需要非常易读的输出

仅日期选项

.toDate().toDateString()

.toDate().toLocaleDateString()

仅时间选项

.toDate().toTimeString()

.toDate().toLocaleTimeString()

对象

但是,如果你收到一个对象,你可能会做这样的事情

{JSON.stringify(createdAt.toDate()).replace(/['"]+/g, '')}

将对象转换为字符串,然后替换字符串周围的引号。

【讨论】:

    【解决方案3】:
    • firebase 时间基本上是秒和纳秒的组合 时间={ 秒:1612974698, 纳秒:786000000 }

    total_miliseconds=(time.seconds+(time.nanoseconds)*0.00000001)*1000。 // 1 纳秒=1e-9 表示 0.00000001

    新日期(total_miliseconds)

    【讨论】:

      【解决方案4】:

      您的时间戳1466769937914 等于2016-06-24 12:05:37 UTC。问题是您将timestamp 乘以1000。但是您的timestamp 已经以毫秒而不是秒为单位保存了一个值(这个错误的假设很可能是您进行乘法的原因)。结果你得到1466769937914000,它转换为48450-02-01 21:51:54 UTC。所以从技术上讲,一切正常,你得到的结果是正确的。您需要解决的只是输入数据,解决方案非常简单 - 只需删除乘法即可:

      SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
      sfd.format(new Date(timestamp));
      

      【讨论】:

        【解决方案5】:

        对于日期,您可以使用此代码:

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time);
        String date = DateFormat.format("dd-MM-yyyy", calendar).toString();
        

        时间:

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time);
        String date = DateFormat.format("hh:mm", calendar).toString();
        

        【讨论】:

          【解决方案6】:

          如果您希望从 Timestamp 获取 Date 实例

          如果您只需要从 Timestamp 中获取 Date 对象,Timestamp 实例带有一个 toDate() 方法,该方法返回一个 Date 实例。

          为了清楚起见:

          Date javaDate = firebaseTimestampObject.toDate()
          

          【讨论】:

            【解决方案7】:

            根据Firebase documentation,可用的JSON类型有:

            • String
            • Long
            • Double
            • Boolean
            • Map<String, Object>
            • List<Object>

            引用另一个Stack Overflow post,我建议你使用JSON date string format yyyy-MM-dd'T'HH:mm:ss.SSSZ 而不是纪元时间戳。

            比较13352055435112012-04-23T18:25:43.511Z,你可以注意到:

            • 它易于阅读,但也很简洁
            • 排序正确
            • 它包括小数秒,可以帮助重新建立年表
            • 符合ISO 8601

            ISO 8601 在国际上已经确立了十多年,并得到W3CRFC3339XKCD 的认可

            【讨论】:

              【解决方案8】:

              String time=dataSnapshot.child("timeStamp").getValue().toString(); Long t=Long.parseLong(时间);

              日期 myDate = new Date(t*1000);

              结果


              5 月 11 日星期五 05:37:58 GMT+06:30

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-08-26
                • 1970-01-01
                • 1970-01-01
                • 2016-11-26
                • 1970-01-01
                • 2019-04-03
                • 1970-01-01
                • 2022-09-30
                相关资源
                最近更新 更多