我在用Java创建新日期时遇到了问题。我从webservice收到一个时间戳(例如1397692800)。从这在线转换器中可以看到,该转换器等于2014年4月17日。当我试图用Java创建一个带有时间戳的新日期时
Date date = new Date (1397692800);
控制台对我说,那相当于1970年CET的星期六1月17日下午14:52。我的密码怎么了?
发布于 2014-03-22 08:36:51
Date(long)
构造函数接受自Unix时代以来的毫秒数。我强烈怀疑,自Unix时代以来,您已经得到了秒数--因此,将该值乘以1000 L即可。
Date date = new Date(timestamp * 1000L);
确保您使用的是1000 L而不是1000,否则如果timestamp
是一个int
,它将以32位而不是64位执行算术,而且您很可能会得到错误的结果。
发布于 2018-09-04 04:45:22
java.time
现代方法使用java.time类。
Instant instant = Instant.ofEpochSecond( 1_397_692_800L ) ;
instant.toString():2014-04-17T00:00:00Z
关于java.time
http://docs.oracle.com/javase/10/docs/api/java/time/package-summary.html框架内置到Java8和更高版本中。这些类取代了麻烦的旧遗赠日期时间类,如java.util.Date
、Calendar
和SimpleDateFormat
。
http://www.joda.org/joda-time/项目现在在维护模式中,建议迁移到java.time类。
要了解更多信息,请参见http://docs.oracle.com/javase/tutorial/datetime/TOC.html。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310。
您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 4.2。不需要字符串,也不需要java.sql.*
类。
在哪里获得java.time类?
https://stackoverflow.com/questions/22575310
复制相似问题