将带有 .000Z 的日期字符串格式化为 NSDate
Format date string with .000Z into NSDate
我想将日期字符串格式化为 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 始终为零。
我遇到了同样的问题,总是得到 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)
这对我有用
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)
在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 and the Apple's official documentation Preset Date and Time Styles and Date Formatters
我想将日期字符串格式化为 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 始终为零。
我遇到了同样的问题,总是得到 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)
这对我有用
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)
在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 and the Apple's official documentation Preset Date and Time Styles and Date Formatters