我想将日期字符串格式化为NSDate对象,这听起来不是什么大事。
关键是,日期字符串在时区值中包含一个点,而不是加号或其他内容。日期如下:
2017-06-04T16:00:00.000Z
我尝试格式化字符串,如
yyyy-MM-dd'T'HH:mm:ss.ZZZZ
yyyy-MM-dd'T'HH:mm:ss.ZZZ
yyyy-MM-dd'T'HH:mm:ss.Z
当然我还在nsdateformatter.com上查了一下,但是在xCode中,NSDate总是为零。
答案 0 :(得分:9)
这项工作对我来说
var str = "2017-06-04T16:00:00.000Z"
let formato = DateFormatter()
formato.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
formato.timeZone = NSTimeZone(name: "UTC")! as TimeZone
formato.formatterBehavior = .default
var data = formato.date(from: str)
答案 1 :(得分:2)
在Objective-C
中NSString *strValue = @"2017-06-04T16:00:00.000Z";
NSString *dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
// Or this if you like get in local time
NSString *dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
NSDateFormatter *dateFmtr = [[NSDateFormatter alloc] init];
[dateFmtr setDateFormat: dateFormat];
// You get a NSDate object
NSDate *dateValue = [dateFmtr dateFromString: strValue];
// Or NSString object
NSString *dateValue = [dateFmtr stringFromDate: dateValue];
针对不同字符串格式的其他变体。
// 2018-02-28T16:38:33.6873197-05:00
// If you have this string format you can use
NSString *strDate1 = @"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ";
有关复杂格式的更多信息,您可以看到模式 Date Format Patterns以及Apple的官方文档Preset Date and Time Styles和Date Formatters
答案 2 :(得分:0)
我面临同样的问题,总是得到nils&作为解决方案,您可以从日期字符串
中删除.ZZZZ部分let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let dateString = openningTimeString.components(separatedBy: ".")[0]
let myDate = dateFormatter.date(from: dateString)