2014-10-30 75 views
-6

我需要使用这些格式的swift检索日期和时间。快速日期和时间ios

2014-09-19 
16:43:00.0 

的NSDate()给出的日期和时间在一起,而时间是在错误的格式,没有人知道如何分别得到这些,并在上面显示的格式的时间。

+2

如果您在控制台中看到它,这是预期的行为。如果你想拥有自己的显示格式,那么你需要通过nsdateformatter传递它。 – Abizern 2014-10-30 16:47:32

回答

0

这应该做的伎俩:

let date = NSDate() 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd" 

let timeFormatter = NSDateFormatter() 
timeFormatter.dateFormat = "HH:mm:ss.S" 

println(dateFormatter.stringFromDate(date)) 
println(timeFormatter.stringFromDate(date)) 
+0

完美的作品!谢谢 – 2014-10-30 17:01:19

+0

没有本地化让我难过 – Abizern 2014-10-30 19:18:10

1

要格式化日期,请使用NSDateFormatter

+0

NSDateFormatter提供了5种不同的样式,但它们都不符合上述格式。 – 2014-10-30 16:54:10

+2

@AbubakarMoallim - NSDateFormatter有几乎无限的样式。 – 2014-10-30 16:58:18

+0

是的,很抱歉,有关于如何指定格式的文档。这是我最不喜欢阅读的东西。 [祝你好运](http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns)。 – 2014-10-30 18:17:47

0

检查下面的代码 -

var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    let d = NSDate() 
    let s = dateFormatter.stringFromDate(d) 
    println(s) 
+0

完美。这对日期有用,那么时间呢? – 2014-10-30 16:55:07

1
你在使用这两个字符串

?如果您使用的为内部使用(时间戳交易,将排序字段,以数​​据库,提交ISO 8601/RFC 3339日期网络服务),您通常会希望确保你也:

  • 使用GMT/UTC;和

  • 指定区域

因此,有可能生成:

let date = NSDate() 
let timeZone = NSTimeZone(forSecondsFromGMT: 0) 
let locale = NSLocale(localeIdentifier: "en_US_POSIX") 

let dateFormatter = NSDateFormatter() 
dateFormatter.timeZone = timeZone 
dateFormatter.locale = locale 
dateFormatter.dateFormat = "yyyy-MM-dd" 

let timeFormatter = NSDateFormatter() 
timeFormatter.timeZone = timeZone 
timeFormatter.locale = locale 
timeFormatter.dateFormat = "HH:mm:ss.S" 

println(dateFormatter.stringFromDate(date)) 
println(timeFormatter.stringFromDate(date)) 

Technical Q&A QA1480文件讨论了这个在互联网上使用8601/RFC 3339日期ISO的范围内,但当您将这些日期用于内部目的时,这些基本概念同样适用。