我使用Facebook查询语言(FQL)来检索用户日期。我的FQL如下。
SELECT post_id , message
FROM stream
WHERE source_id = me()
AND actor_id = me()
AND created_time > 1221596000
在这里,我感觉created_time是以秒为单位的。
我正在使用Java。有人能告诉我如何在Java中将系统当前日期和时间转换为created_time秒吗?
System.currentTimeMillis()
是以毫秒为单位的历元。所以,给定一秒钟就是一千毫秒。您可以通过划分1000
来轻松地转换它。或者我错过了什么?
将此System.currentTimeInMillis()
除以1000。
tl;dr
Instant.now()
.getEpochSecond()
1519944626
java.time
现代方法使用java.time类。
Instant
Instant
类表示以UTC为单位的时间线上的一个时刻,分辨率为纳秒(最多九(9)位小数)。
Instant instant = Instant.now() ; // Capture current moment in UTC.
从epoch开始计数
您可以从UTC 1970年第一个时刻的历元参考(1970-01-01T00:00Z)中确定整秒数。小心数据丢失:您忽略了Instant
对象值中可能存在的任何小数秒。
long secondsSinceEpoch = instant.getEpochSecond() ; // Ignores any fractional second in your `Instant`.
正在分析
您可以转向另一个方向,将这样的计数从epoch解析为Instant
对象。
Instant instant = Instant.ofEpochSecond( yourCountFromEpochGoesHere ) ;
关于java.time
java.time框架构建在Java8及更高版本中。这些类取代了诸如java.util.Date
、Calendar
和&CCD_ 10。
现在处于维护模式的JodaTime项目建议迁移到java.Time类。
要了解更多信息,请参阅Oracle教程。并在Stack Overflow中搜索许多示例和解释。规范是JSR310。
您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,也不需要java.sql.*
类。
从哪里获得java.time类?
- Java SE 8、Java SE 9及更高版本
- 内置
- 标准Java API的一部分,带有捆绑实现
- Java 9添加了一些小功能和修复程序
- Java SE 6和Java SE 7
- 大部分java.time功能都是向后移植到Java6&7英寸ThreeTen背包
- 安卓
- java.time类的Android捆绑包实现的后续版本
- 对于早期的Android,ThreeTenABP项目适用于ThreeTen Backport(如上所述)。请参阅如何使用ThreeTenABP…
ThreeTen Extra项目通过附加类扩展java.time。这个项目是将来可能添加到java.time的试验场。您可以在这里找到一些有用的类,如Interval
、YearWeek
、YearQuarter
等等。