【问题标题】:Android - Convert user selected time to UTC and vice versaAndroid - 将用户选择的时间转换为 UTC,反之亦然
【发布时间】:2021-02-08 05:55:32
【问题描述】:

我正在开发 Android 应用程序,我想将用户选择的本地时间(设备时间)转换为 UTC 秒。之后,我必须再次转换它并在设备的时区显示。谁能建议如何在 Kotlin 中执行此操作?

【问题讨论】:

标签: android kotlin


【解决方案1】:

我想将用户选择的本地时间(设备时间)转换为 UTC 秒数

你想错了。时间戳(包括设备时间)没有时区。所有时间戳都是自 1970 年 1 月 1 日 00:00 UTC 以来的秒数,与设备时区无关。如果用户选择了一个时间,并且您将该时间作为时间戳,则它的格式已经正确。您可以将其视为“UTC 秒数”,因为它基于 UTC 时间,但没有不属于“UTC 秒数”的时间戳。

您需要时区的唯一时间是转换为日期、将其显示给用户等。

【讨论】:

    【解决方案2】:

    使用给定模式和默认格式语言环境的默认日期格式符号构造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
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多