3

我正在尝试以 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]
4

2 回答 2

1

这是一个帮助类,您可以使用它来转换您的日期:

public object DateHelper {
    private const val ISO_8601_24H_FULL_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

    @JvmName("toIsoStringNullable")
    fun Date?.toIsoString(): String? {
        return this?.toIsoString()
    }

    fun Date.toIsoString(): String {
        val dateFormat: DateFormat = SimpleDateFormat(ISO_8601_24H_FULL_FORMAT)
        return dateFormat.format(this)
    }
}

它可以像这样非常简洁地使用:

Date().toIsoString()
于 2021-12-06T22:22:13.740 回答
-1

由于某种原因,这解决了问题并返回了正确的日期。

val today = Calendar.getInstance()
val sendDateUAT = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(today.time)
于 2019-07-22T12:54:38.930 回答