1

我已阅读 Google Directions API 的文档以提出方向请求。URL 的示例如下所示

http://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Queens&sensor=false&departure_time=1343605500&mode=transit

变量的值departure_time应该反映以下信息:

2012 年 7 月 30 日上午 9 点 45 分。

有人可以解释一下这种时间格式吗?

谢谢。

4

3 回答 3

3

这是一个时间戳 - 自Unix 纪元1970-01-01 00:00:00 UTC以来经过的秒数。如果你想要那种格式的“现在”,你可以使用System.currentTimeMillis() / 1000,或者如果你有一个Date对象,你可以使用date.getTime() / 1000.

于 2013-03-25T17:00:49.883 回答
1

这是一个纪元 unix 时间戳(自 1970 年 1 月 1 日以来的秒数)。您可以通过以下方式创建日期

Date d = new Date(1343605500L);

或使用http://www.epochconverter.com/

于 2013-03-25T16:59:07.633 回答
0

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时间只是几种可能性之一)
  • 计数精度(秒、毫秒、纳秒)

自纪元以来的时间精度图,POSIX Unix 时间使用秒,java.util.Date 和 Joda-time 使用毫秒,JSR 310 java.time.* 类使用纳秒

于 2013-12-20T07:39:39.240 回答