【问题标题】:Convert String to NSDate in Swift在 Swift 中将字符串转换为 NSDate
【发布时间】:2014-10-28 05:27:31
【问题描述】:

如何将此日期转换为NSDate

datestring = /Date(147410000000)/   //String from server response        

预期输出:

12/01/2014

我试过这个。但我得到了零。

let dateFormatter:NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
let date = dateFormatter.dateFromString(datestring)
return date

【问题讨论】:

标签: swift ios8 nsdate


【解决方案1】:

147410000000”,我认为这是你的时间间隔 从服务器获取。

在您的情况下,您需要修剪字符串并将其转换为 /Date(147410000000)/147410000000

    var string : String = "1408709486" // (Put your string here)

    var timeinterval : NSTimeInterval = (string as NSString).doubleValue // convert it in to NSTimeInteral

    var dateFromServer = NSDate(timeIntervalSince1970:timeinterval) // you can the Date object from here

    println(dateFromServer) // for My Example it will print : 2014-08-22 12:11:26 +0000


    // Here i create a simple date formatter and print the string from DATE object. you can do it vise-versa. 

    var dateFormater : NSDateFormatter = NSDateFormatter()
    dateFormater.dateFormat = "yyyy-MM-dd"
    println(dateFormater.stringFromDate(dateFromServer)) // And then i can get the string like this : 2014-08-22

查看评论部分。 Martin 的评论也将帮助您解决问题。

【讨论】:

  • "147410000000" 以毫秒为单位给出时间,因此您必须将其除以 1000。
  • 感谢 Krupanshu!很好的解决方案。通常 sqlite 将日期存储为时间间隔。我们可以用它来检索并重新转换为 NSDate。
【解决方案2】:

您只是在上述代码的最后一行使用了错误的函数

 var dateString = "01-02-2010"
 var dateFormatter = NSDateFormatter()
 dateFormatter.dateFormat = "yyyy-MM-dd"
 var dateFromString = dateFormatter.dateFromString(dateString)

【讨论】:

  • 好的。我更新了我的问题。我的输入字符串也是这样的 /Date(147410000000)/
【解决方案3】:

在 Swift 中转换日期格式:

let myDate = "2016-09-19 01:25:17"
let dateFormat = NSDateFormatter()
dateFormat.dateFormat = "yyyy-MM-dd HH:mm:ss"

let date = dateFormat.dateFromString(myDate)
dateFormat.dateFormat =  "yyyy-MM-dd"
let  newDate =  dateFormat.stringFromDate(date!)

print(newDate)

【讨论】:

  • 如果我总是需要当前日期然后将它传递给它以获取 NSDate 而不是使用硬编码字符串。
  • 试试这个: let date = NSDate() dateFormat.dateFormat = "yyyy-dd-MM" let newDate = dateFormat.stringFromDate(date) print(newDate)
【解决方案4】:

基于 Wolverine 的代码,我为 Swift 3 和 iOS10 编写了一个函数。随意使用:

func convertStringTimestampToStringDate(_ dateandTime: String) -> String {

let string : String = dateandTime
let timeinterval : TimeInterval = (string as NSString).doubleValue
let dateFromServer = NSDate(timeIntervalSince1970:timeinterval)

let dateFormater : DateFormatter = DateFormatter()
dateFormater.dateFormat = "MMM dd, yyyy, HH:mm a"
dateFormater.amSymbol = "AM"
dateFormater.pmSymbol = "PM"

let backToString = dateFormater.string(from: dateFromServer as Date)
print(dateFormater.string(from: dateFromServer as Date))
return backToString }

这应该会带来一个解决方案,例如:“2016 年 10 月 20 日,03:30 AM”来自时间戳作为输入。

【讨论】:

    猜你喜欢
    • 2015-09-07
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多