【发布时间】:2021-02-08 05:55:32
【问题描述】:
我正在开发 Android 应用程序,我想将用户选择的本地时间(设备时间)转换为 UTC 秒。之后,我必须再次转换它并在设备的时区显示。谁能建议如何在 Kotlin 中执行此操作?
【问题讨论】:
-
@kelvin 不,这不是正确的答案
-
@Τζιότι 你可以试试这个library
我正在开发 Android 应用程序,我想将用户选择的本地时间(设备时间)转换为 UTC 秒。之后,我必须再次转换它并在设备的时区显示。谁能建议如何在 Kotlin 中执行此操作?
【问题讨论】:
我想将用户选择的本地时间(设备时间)转换为 UTC 秒数
你想错了。时间戳(包括设备时间)没有时区。所有时间戳都是自 1970 年 1 月 1 日 00:00 UTC 以来的秒数,与设备时区无关。如果用户选择了一个时间,并且您将该时间作为时间戳,则它的格式已经正确。您可以将其视为“UTC 秒数”,因为它基于 UTC 时间,但没有不属于“UTC 秒数”的时间戳。
您需要时区的唯一时间是转换为日期、将其显示给用户等。
【讨论】:
使用给定模式和默认格式语言环境的默认日期格式符号构造SimpleDateFormat
fun localToGMT(): Date? {
val date = Date()
val sdf = getDateInstance()
sdf.timeZone = TimeZone.getTimeZone("UTC")
return DateFormat.getDateInstance().parse(sdf.format(date))
}
fun gmttoLocalDate(date: Date):Date? {
val timeZone = Calendar.getInstance().getTimeZone().getID();
val local = Date(date.getTime() + TimeZone.getTimeZone(timeZone).getOffset(date.getTime()));
return local
}
【讨论】: