我试图从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
你可以看到这一年并不像我们一样。
所以,请帮我解决这个问题。
答案 0 :(得分:21)
您的时间戳1466769937914
等于2016-06-24 12:05:37 UTC
。问题是你没有真正的理由将时间戳乘以1000,结果会给你1466769937914000
。这相当于48450-02-01 21:51:54 UTC
,因此您获得的结果在技术上是正确的,并且一切正常。您只需使用错误的输入数据提供代码,这就是我们必须修复的唯一部分。解决方案只是删除乘法,你应该都很好:
SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
sfd.format(new Date(timestamp))
答案 1 :(得分:3)
根据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
代替纪元时间戳。
将1335205543511
与2012-04-23T18:25:43.511Z
进行比较,您会注意到:
答案 2 :(得分:0)
如果您只需要从Timestamp获取Date
对象,则Timestamp实例带有一个toDate()
方法,该方法返回一个Date
实例。
为清楚起见:
Date javaDate = firebaseTimestampObject.toDate()
答案 3 :(得分:0)
对于日期,您可以使用以下代码:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let filterAction = UIContextualAction(style: .normal, title: "FILTER") { (action, view, bool) in
print("Swiped to filter")
}
filterAction.backgroundColor = UIColor.blue
return UISwipeActionsConfiguration(actions: [filterAction])
}
时间:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
String date = DateFormat.format("dd-MM-yyyy", calendar).toString();
答案 4 :(得分:0)
total_miliseconds=(time.seconds+(time.nanoseconds)*0.00000001)*1000。 // 1 纳秒=1e-9 表示 0.00000001
新日期(total_miliseconds)
答案 5 :(得分:0)
.toDate()
方法应该就是您所需要的您可能喜欢文档 here
作为一个额外的好处,您可能需要非常可读的输出
.toDate().toDateString()
.toDate().toLocaleDateString()
.toDate().toTimeString()
.toDate().toLocaleTimeString()
然而,如果你收到一个对象,你可能会做这样的事情
{JSON.stringify(createdAt.toDate()).replace(/['"]+/g, '')}
将对象转换为字符串,然后替换字符串周围的引号。
答案 6 :(得分:-1)
String time = dataSnapshot.child(&#34; timeStamp&#34;)。getValue()。toString(); Long t = Long.parseLong(time);
日期myDate =新日期(t * 1000);
结果
5月11日星期五05:37:58 GMT + 06:30