从时间戳中获取特定格式的时间,包括 TimeZone
Get time in specific format from timestamp including TimeZone
我有一个简单的函数可以从字符串形式的时间戳中提取时间。
timestamp(input) : "2020-08-13T09:33:17Z"
outputTime(output): "09:33"
desired output : "12:33"
功能:
fun getTimeFromTimestamp(timestamp: String): String {
val inputFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'Z\'", Locale.getDefault())
val time = inputFormat.parse(timestamp) ?: Date()
val outputFormat: DateFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
val outputTime = outputFormat.format(time)
return outputTime
}
问题是它不会影响输出中的时区,在这种情况下是 GMT+3
。
你可以看到我的调试screenshot
如何确保显示的时间包括其附带的时区 (GMT+3)?
输出时间采用该格式,因为您在此行中将其指定为 (HH:mm
)
val outputFormat: DateFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
如果您希望它包含时区,请将时区附加到输出字符串
编辑
"HH:mm zZ"
似乎对我有用,看看这个 fiddle
问题是您导入开始时间 "2020-08-13T09:33:17Z"
AS GMT+3
然后尝试将其格式化为 GMT+3
。尝试将您的导入日期格式化为 GMT+0
,然后将输出格式保持为 GMT+3
您可以查看此答案以了解有关如何在 SimpleDateFormat 上设置时区的更多信息:
这会将您的时间从 GMT 时间戳转换为当地时间
fun getTimeFromTimestamp(timestamp: String): String {
val inputFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'Z\'")
inputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
val time = inputFormat.parse(timestamp) ?: Date()
val outputFormat: DateFormat = SimpleDateFormat("HH:mm ,z")
inputFormat.setTimeZone(TimeZone.getDefault());
val outputTime = outputFormat.format(time)
return outputTime
使用 LocalDateTime
[java.time] 代替,因为 2020 年不推荐使用 SimpleDateFormat
。
勾选这个link
我有一个简单的函数可以从字符串形式的时间戳中提取时间。
timestamp(input) : "2020-08-13T09:33:17Z"
outputTime(output): "09:33"
desired output : "12:33"
功能:
fun getTimeFromTimestamp(timestamp: String): String {
val inputFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'Z\'", Locale.getDefault())
val time = inputFormat.parse(timestamp) ?: Date()
val outputFormat: DateFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
val outputTime = outputFormat.format(time)
return outputTime
}
问题是它不会影响输出中的时区,在这种情况下是 GMT+3
。
你可以看到我的调试screenshot
如何确保显示的时间包括其附带的时区 (GMT+3)?
输出时间采用该格式,因为您在此行中将其指定为 (HH:mm
)
val outputFormat: DateFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
如果您希望它包含时区,请将时区附加到输出字符串
编辑
"HH:mm zZ"
似乎对我有用,看看这个 fiddle
问题是您导入开始时间 "2020-08-13T09:33:17Z"
AS GMT+3
然后尝试将其格式化为 GMT+3
。尝试将您的导入日期格式化为 GMT+0
,然后将输出格式保持为 GMT+3
您可以查看此答案以了解有关如何在 SimpleDateFormat 上设置时区的更多信息:
这会将您的时间从 GMT 时间戳转换为当地时间
fun getTimeFromTimestamp(timestamp: String): String {
val inputFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'Z\'")
inputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
val time = inputFormat.parse(timestamp) ?: Date()
val outputFormat: DateFormat = SimpleDateFormat("HH:mm ,z")
inputFormat.setTimeZone(TimeZone.getDefault());
val outputTime = outputFormat.format(time)
return outputTime
使用 LocalDateTime
[java.time] 代替,因为 2020 年不推荐使用 SimpleDateFormat
。
勾选这个link