我想将我的String dateTime分隔为不同的变量日期和时间,因为我将单独显示它。我怎么能这样做?
这是我获取日期的代码,它返回nil:
let datetime = "2015-04-06T13:24:11.913"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMM-DD-YYYY"
let date = dateFormatter.dateFromString(datetime)
println(date)
提前致谢。
更新: 这是我的错误,
更新2: 它没有返回错误,但它为格式化日期
提供了错误的月份
答案 0 :(得分:5)
使用此格式化程序
let datetime = "2015-04-06T13:24:11.913"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
let date = dateFormatter.dateFromString(datetime)
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitHour, fromDate: date!)
components.day//This is 6
您的格式化程序必须匹配您的字符串
这是我的操场截图,效果很好。
答案 1 :(得分:3)
let datetime = "2015-04-06T13:24:11" //"2015-04-06T13:24:11.913"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-mm-dd'T'HH:mm:ss" //"yyyy-mm-dd'T'HH:mm:ss.SSS"
let date = dateFormatter.dateFromString(datetime)
let myTime = NSDateFormatter.localizedStringFromDate(date!, dateStyle: .NoStyle , timeStyle: .MediumStyle)
let myDate = NSDateFormatter.localizedStringFromDate(date!, dateStyle: .ShortStyle , timeStyle: .NoStyle)
println(date!)//DateWithTime
println(myDate)//Date
println(myTime)//time
这可以帮助您格式化.. NSDateFormatter_Class 感谢@LeonardoSavioDabus给出此图片=> Swift NSDate UTC time and local time
答案 2 :(得分:1)
除了你测试的字符串有毫秒的问题,而你的数组中的日期只有几秒,现在的问题是Y是一年中的一周。您需要使用带有日期格式的小写“y”和小写“d”。日期格式应如下所示:
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
从您可以使用此扩展程序的日期中提取月份组件:
extension NSDate {
var month: Int {
return NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.component(NSCalendarUnit.CalendarUnitMonth, fromDate: self)
}
}
NSDate().month // 5
答案 3 :(得分:0)
一旦用户将iOS日历设置为格里历日历以外的任何内容,其他答案中的所有NSDateFormatter
都会给出错误的日期。您的日期字符串也没有提及任何时区,因此我将假设为UTC。
let formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.timeZone = NSTimeZone(name: "UTC")
formatter.calendar = NSCalendar.gregorianCalendar()
formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS"
答案 4 :(得分:-1)
尝试这样,
let datetime = "2015-04-06T13:24:11.913"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
let dateFromString = dateFormatter.dateFromString(datetime)
var calendar = NSCalendar.currentCalendar()
var components:NSDateComponents = calendar.components(NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMinute | NSCalendarUnit.CalendarUnitSecond | NSCalendarUnit.CalendarUnitHour, fromDate: dateFromString!)
var stringDate = "\(components.month)-\(components.day)-\(components.year)"
var stringTime = "\(components.hour):\(components.minute):\(components.second)"
println(stringDate)
println(stringTime)
您将获得输出赞:
2015年4月6日
13时24分11秒
享受编码!!