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.
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
to2012-04-23T18:25:43.511Z
, you can noticed that:ISO 8601 has been well-established internationally for more than a decade and is endorsed by W3C, RFC3339, and XKCD
For date, you can use this code :
For time :
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
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 atoDate()
method that returns aDate
instance.For clarity:
Your timestamp
1466769937914
equals to2016-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 you1466769937914000
. And that equals to48450-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: