How to convert firebase timestamp into date and ti

2020-07-05 06:56发布

I have tried to get date and time from firebase timestamp as follows:

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

but I'm getting results like:

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

as you can see the year is not as we live.

So, please help me to fix this.

5条回答
家丑人穷心不美
2楼-- · 2020-07-05 07:01

According to Firebase documentation, the types that are available JSON are:

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

Quoting another Stack Overflow post, I suggest you use JSON date string format yyyy-MM-dd'T'HH:mm:ss.SSSZ instead of epoch timestamp.

Comparing 1335205543511 to 2012-04-23T18:25:43.511Z, you can noticed that:

  • It's human readable but also succinct
  • It sorts correctly
  • It includes fractional seconds, which can help re-establish chronology
  • It conforms to ISO 8601

ISO 8601 has been well-established internationally for more than a decade and is endorsed by W3C, RFC3339, and XKCD

查看更多
姐就是有狂的资本
3楼-- · 2020-07-05 07:01

For date, you can use this code :

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

For time :

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
String date = DateFormat.format("hh:mm", calendar).toString();
查看更多
男人必须洒脱
4楼-- · 2020-07-05 07:07

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

Date myDate = new Date(t*1000);

Result


Fri May 11 05:37:58 GMT+06:30

查看更多
We Are One
5楼-- · 2020-07-05 07:09

If you are looking to get a Date instance from Timestamp

If you need to get just the Date object from Timestamp, the Timestamp instance comes with a toDate() method that returns a Date instance.

For clarity:

Date javaDate = firebaseTimestampObject.toDate()
查看更多
闹够了就滚
6楼-- · 2020-07-05 07:23

Your timestamp 1466769937914 equals to 2016-06-24 12:05:37 UTC. The problem is that you are multiplying the timestamp by 1000 for no real reason, which in result gives you 1466769937914000. And that equals to 48450-02-01 21:51:54 UTC, so results you are getting are correct and all is technically working fine. As you feed your code with wrong input data then that's the only part that must be corrected and ssolution is simple - remove that multiplication and you will be all good:

SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
sfd.format(new Date(timestamp));
查看更多
登录 后发表回答