【问题标题】:Converting seconds to time of day将秒转换为一天中的时间
【发布时间】:2018-07-30 18:00:04
【问题描述】:

我在 iOS 上有一个应用程序,正在移植到 Android 上。我在处理时间方面遇到了问题。

在 iOS 上,我使用以下方式存储时间点:

Int(NSDate().timeIntervalSince1970-0.5)

并使用以下方法将其转换为 HH:MM:SS:

private let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
return dateFormatter.string(from: Date(timeIntervalSince1970: value))

在 Android(Kotlin) 上存储我使用的时间点:System.currentTimeMillis()/1000

对于转换:

LocalTime.MIN.plus(Duration.ofSeconds(xVal)).toString())

问题是转换后的值提前 6 小时(可能或多或少,但我只看 HH:MM:SS)。据我所知,我在 android 上获得时间的方式是正确的,我认为问题在于我在转换它时。我一直在寻找更多将时间转换为时间间隔的方法,但我无法让它发挥作用。大多数帖子只是将秒转换为 HH:MM:SS,所以这些都是不可能的。我的 iOS 代码相当于什么?

编辑 我也尝试过使用这种方法来转换它仍然是 6 小时,即使我给它一个时区:

    val cal = Calendar.getInstance()
    cal.timeInMillis = xVal * 1000L
    cal.timeZone = TimeZone.getTimeZone(TimeZone.getDefault().displayName)
    Log.i("This is the cal value",cal.get(Calendar.HOUR_OF_DAY).toString())

【问题讨论】:

  • 您在 UTC 时区吗?如果不是,您需要在转换时设置时区,否则它将关闭
  • 问题已经回答..检查stackoverflow.com/questions/11357945/…
  • @MuhammadHassaan 正如我在未从 Unix Epoch 转换时间的问题中所述
  • @tyczj 我将如何获取当前时区并应用于该值?
  • 一个简单的google搜索就可以回答如何获取时区,这里是一个基本的例子stackoverflow.com/questions/6088778/…

标签: android ios datetime kotlin


【解决方案1】:
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
val date = sdf.format(Date(alarm.getNextTrigger()));

【讨论】:

    猜你喜欢
    • 2015-02-03
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2017-05-10
    相关资源
    最近更新 更多