在我的项目中,我正在“2008-02-01T10:03:23.793-06:00”这个日期格式在字符串中我必须转换为NSDate我正在使用
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];
但是当我使用NSLog打印日期值时,我的值为null。
请帮帮我
谢谢
答案 0 :(得分:6)
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];
(如果需要setLenient,则禁止使用Dunno。)
答案 1 :(得分:2)
只需使用它(注意“ZZZ”而不是“Z”):
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
答案 2 :(得分:1)
我认为您还需要为格式化程序设置区域设置。看看here
答案 3 :(得分:1)
Google的GData Objective-C客户端有一个类(GDataDateTime),可以解析RFC 3339日期。
http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/Elements/GDataDateTime.m
答案 4 :(得分:0)
这是快速的4及更高版本的实现。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"
var dateFromStr = dateFormatter.date(from: "2008-02-01T10:03:23.793-06:00")!
dateFormatter.dateFormat = "hh:mm:ss a 'on' MMMM dd, yyyy"
//Output: 12:16:45 PM on January 01, 2000
dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
//Output: Sat, 1 Jan 2000 12:16:45 +0600
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
//Output: 2000-01-01T12:16:45+0600
dateFormatter.dateFormat = "EEEE, MMM d, yyyy"
//Output: Saturday, Jan 1, 2000
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
//Output: 01-01-2000 12:16
dateFormatter.dateFormat = "MMM d, h:mm a"
//Output: Jan 1, 12:16 PM
dateFormatter.dateFormat = "HH:mm:ss.SSS"
//Output: 12:16:45.000
dateFormatter.dateFormat = "MMM d, yyyy"
//Output: Jan 1, 2000
dateFormatter.dateFormat = "MM/dd/yyyy"
//Output: 01/01/2000
dateFormatter.dateFormat = "hh:mm:ss a"
//Output: 12:16:45 PM
dateFormatter.dateFormat = "MMMM yyyy"
//Output: January 2000
dateFormatter.dateFormat = "dd.MM.yy"
//Output: 01.01.00
//Output: Customisable AP/PM symbols
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "Pm"
dateFormatter.dateFormat = "a"
//Output: Pm
// Usage
var timeFromDate = dateFormatter.string(from: dateFromStr)
print(timeFromDate)
答案 5 :(得分:-3)
NSDateFormatter将无法解析它,因为时区不符合RFC 822 or GMT standard。问题出在最后一个“:”上,你需要“GMT”。
您尊重RFC 3339。
的日期您需要使用NSFormatter来解析它。您应该使用getObjectValue:forString:errorDescription:
设置字符串@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
。