当前位置: 首页 > 面试题库 >

在Unix时间戳上使用DateFormatter

戴化
2023-03-14
问题内容

我在跑步时遇到崩溃,它指向dateFormmater.timezone。控制台中的错误是:

无法将类型“ Swift.Optional”(0x1192bf4a8)的值强制转换为“ NSTimeZone”(0x1192c0270)。

价值rowEvents.date就是"1480134638.0"

我试图从Firebase中提取一个保存为字符串的Unix时间戳。将其转换为日期,然后再次将其另存为字符串,以便将其张贴在单元格标签上。

我从StackOverflow获得了这段代码。我插入了数据,一切运行良好。我想一切都不好…

if let lastUpdated : String = rowEvents.date {

    let epocTime = TimeInterval(lastUpdated)! / 1000 // convert it from milliseconds dividing it by 1000

    let unixTimestamp = NSDate(timeIntervalSince1970: epocTime) //convert unix timestamp to Date

    let dateFormatter = DateFormatter()
    dateFormatter.timeZone = NSTimeZone() as TimeZone!
    dateFormatter.locale = NSLocale.current // NSLocale(localeIdentifier: "en_US_POSIX")
    dateFormatter.dateFormat =  "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
    dateFormatter.date(from: String(describing: unixTimestamp))

    let updatedTimeStamp = unixTimestamp
    let cellDate = DateFormatter.localizedString(from: updatedTimeStamp as Date, dateStyle: DateFormatter.Style.full, timeStyle: DateFormatter.Style.medium)

    cell.subtitleLabel.text = cellDate              
}

结果来自以下代码:

let myTimeStamp = self.datePicker?.date.timeIntervalSince1970

let calendarDate = String(describing: myTimeStamp! /** 1000*/)

问题答案:

您可以unixTimestamp使用将日期转换为日期Date(timeIntervalSince1970:)

let unixTimestamp = 1480134638.0
let date = Date(timeIntervalSince1970: unixTimestamp)

如果要以特定格式在字符串中显示日期,则可以使用DateFormatter这种方式。

let date = Date(timeIntervalSince1970: unixtimeInterval)
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "GMT") //Set timezone that you want
dateFormatter.locale = NSLocale.current
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm" //Specify your format that you want
let strDate = dateFormatter.string(from: date)


 类似资料:
  • 我知道这是一个非常常见的问题,但我觉得我找到的答案并没有真正解决问题。我将概述我的具体用例,并对来自其他SO答案和网络的信息进行总结。 对于我正在编写的服务,数据库条目被创建并存储在移动设备和我们的网站上,需要以两种方式同步。我们目前的目标是Android和iOS,它们都使用sqlite作为关系数据库。服务器端是使用Django和MySQL在Python中实现的,但将来可能会有其他解决方案取代它。

  • 问题内容: 我必须索引包含“时间”字段的文档,该字段的值是一个整数,表示自纪元以来的秒数(又称为Unix时间戳)。 我一直在阅读ES文档,发现了这一点: http://www.elasticsearch.org/guide/reference/mapping/date- format.html 但是似乎如果我要提交unix时间戳并将其存储在“日期”字段中(整数字段对我没有用),我只有两个选择: 实

  • 问题内容: 通过将值放入构造函数中,我可以将unix时间戳转换为对象。例如:我可以将其作为。 但是在那之后,如何从该对象取回unix时间戳? 问题答案: 检索自格林尼治标准时间1970年1月1日传递给构造函数以来的毫秒数。从中获得Unix时间(相同,但以秒为单位)并不难。

  • 问题内容: 是否有32位系统的64位Unix时间戳转换的C ++实现?我需要转换为64位整数,反之亦然,包括leap年,时区和UTC。还需要它可移植,至少对于GNU / Linux和Windows而言。 问题答案: 你需要: 最初(2011年),此答案包含指向2038bug.com的链接,可以在其中下载包含上述功能的小型库。那时,该库已从2038bug.com中删除,链接断开并由主持人从答案中删除

  • 问题内容: 关于“ UNIX timestamp to MySQL time”,有很多问题要问。我需要相反的方式,是的…知道吗? 问题答案: 用途: 还要检查一下(以MySQL方式完成)。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time- functions.html#function_unix- timestamp

  • 我已经看过stackoverflow了,甚至看过一些建议的问题,但似乎没有一个答案,如何在C#中获得unix时间戳?