Google 文档中的缺陷
谷歌搜索该特定数字会导致类似 StackOverflow.com 问题之类的地方。这些页面让我得出结论,Google Directions API 的文档存在缺陷。
您和其他人报告说,医生说 1343605500 = 2012 年 7 月 30 日上午 9:45 在纽约。但这是不正确的。月份的日期和时间都是错误的。
1343605500
从 1970 年 UTC/GMT 年初开始的秒数:
- 在纽约是
2012-07-29T19:45:00.000-04:00
- 在 UTC/GMT 是
2012-07-29T23:45:00.000Z
从数字中获取日期时间
正如其他答案所述,显然谷歌正在向您提供自 1970 年初 UTC/GMT 的 Unix 纪元以来的秒数(无时区偏移)。
除了使用 java.util.Date/Calendar 类之外,您还可以使用第三方开源 Joda-Time库。
下面是一些示例源代码,向您展示如何将文本解析为带时区的日期时间。
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
// Starting data.
String string = "1343605500";
String timeZoneName = "America/New_York";
// Convert string of seconds to number of milliseconds.
long millis = Long.parseLong( string ) * 1000 ; //
// Specify time zone rather than rely on default.
DateTimeZone timeZone = DateTimeZone.forID( timeZoneName );
// Instantiate DateTime object.
DateTime dateTime = new DateTime( millis, timeZone );
System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTime in UTC/GMT: " + dateTime.toDateTime( DateTimeZone.UTC ) );
运行时……</p>
dateTime: 2012-07-29T19:45:00.000-04:00
dateTime in UTC/GMT: 2012-07-29T23:45:00.000Z
使用纪元计数时,必须注意:
- 哪个时代(Unix时间只是几种可能性之一)
- 计数精度(秒、毫秒、纳秒)