【发布时间】:2019-07-22 02:05:37
【问题描述】:
我正在尝试以 ISO 8601 格式获取当前日期和时间。我下面的代码返回 14 天后的日期和不正确的时间。我需要 api 请求的正确格式和当前日期。
val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").apply {
this.timeZone = TimeZone.getTimeZone("CST")
}
val now = Calendar.getInstance(TimeZone.getTimeZone("CST"))
val sendDateUAT = formatter.format(now.time)
Log.d(TAG, "sendDate: $sendDateUAT")
这会返回:2019-08-05T02:53:40Z
编辑:这是现在。时间:
java.util.GregorianCalendar[time=1564973620006,areFieldsSet=true,lenient=true,zone=GMT,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=217,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE=53,SECOND=40,MILLISECOND=6,ZONE_OFFSET=0,DST_OFFSET=0]
【问题讨论】:
-
无法在本地重现。你在哪里执行这段代码?我怀疑时钟不正确。
-
你能验证
now.time的结果是预期的吗?即只需使用标准 UTC 格式对其进行格式化,以查看结果并与您的机器当前时间进行比较。您的格式对于提取 6801 看起来是正确的;至少从我在网上看到的几个例子来看。 -
@HoratiusCocles 我刚刚用
now.time结果更新了我的问题。 -
@Phil 我正在 android studio 中执行此代码。它应该获取设置为 CST 的计算机系统时间。
-
1564973620006 是格林威治标准时间:2019 年 8 月 5 日星期一 02:53:40.006。在我看来,当您提出问题时,一天中的时间是正确的,但日期是提前 2 周。另外
MONTH=7表示八月(啊!),而您有DAY_OF_MONTH=5。
标签: android kotlin iso8601 current-time