【问题标题】:convert date yyyy-MM-dd to string like /Date(1430604000000+0200)/ in swift将日期 yyyy-MM-dd 快速转换为 /Date(1430604000000+0200)/ 等字符串
【发布时间】:2014-12-31 15:13:59
【问题描述】:

我需要将保存在 NSDate 格式 yyyy-MM-dd 的日期转换为 NSString 格式像 /Date(1430604000000+0200)/ 在swift中,因为我必须将它保存在我的数据库 SQLite 中。

这样我将 /date()/ 转换为 nsdate yyyy-MM-dd:

var charactersToRemove: NSCharacterSet = NSCharacterSet.decimalDigitCharacterSet().invertedSet
                var milliseconds:NSString = dateString.stringByTrimmingCharactersInSet(charactersToRemove)
                var dateTemp:NSDate!
                if (milliseconds != "" && !milliseconds.isEqualToString("62135596800000") )
                {
                    var seconds:NSTimeInterval = milliseconds.doubleValue / 1000
                    dateTemp = NSDate(timeIntervalSince1970: seconds)
                }

但现在我需要扭转它。我需要转换 nsdate yyyy-MM-dd to string /date()/

谢谢。

【问题讨论】:

  • 1430604000000+0200 只是 UTC 时间戳吗?如果是这样,请考虑一下。使用NSDate().timeIntervalSince1970,您可以从您的日期获取时间戳,从那里用 + 替换 NSTimeInterval 的双精度数中的小数应该不会太难

标签: swift nsdate date-formatting


【解决方案1】:

我没有添加签名检查,但我最终得到了这样的结果。

let format = "yyyy-MM-dd"
let formatter = NSDateFormatter()
formatter.timeZone = NSTimeZone.localTimeZone()
formatter.dateFormat = format

var dateString = "2014-12-30" // your input date
let date = formatter.dateFromString(dateString) 
let timestamp: NSTimeInterval = date!.timeIntervalSince1970 * 1000.0

let result = String(format: "/Date(%.0f+%02d00)/", timestamp,formatter.timeZone.secondsFromGMT/3600)

【讨论】:

  • 我把你的代码和我的代码结合起来,我发现它返回“1970-01-17”而不是“2014-12-30”,知道吗?
  • 格林威治标准时间的原始日期和时间是多少?
  • 我重构了代码。你能提供你的测试目标日期吗?
  • 代码以秒为单位返回时间戳,这就是问题所在
猜你喜欢
  • 1970-01-01
  • 2018-05-19
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多