将 NSDate 格式化为 YYYYMMDDHHMMSS.XXX [gmt offset[:tz name]]
Formating NSDate to YYYYMMDDHHMMSS.XXX [gmt offset[:tz name]]
我正在尝试创建一个如下所示的日期:
19961005132200.124[-5:EST]
这是我正在尝试的:
+ (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"YYYYMMDDHHMMSS.000[ZZ:zzz]"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[df setTimeZone:gmt];
return [df stringFromDate:[NSDate date]];
}
这是返回:
201604103050483.000[+0000:GMT]
在此先感谢您的帮助!
首先为 Unicode specification for date format specifiers 添加书签。
然后看看你需要的每个部分:
- 4 位数年份:yyyy
- 两位数月份:MM
- 两位数的日期:dd
- 24 小时制 2 位数小时:HH
- 2 位数分钟:mm
- 2 位数秒:ss
- 3 位小数秒:SSS
时区有问题,因为除了前导零之外,没有任何说明符可以为您提供冒号之前的部分。最接近的是:x:z
.
随心所欲:yyyyMMddHHmmss.SSS[x:z]
+ (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyyMMddHHmmss.SSS[x:z]"];
return [df stringFromDate:[NSDate date]];
}
如果您希望输出采用用户本地时区,请不要设置格式化程序的时区。
格式字符串使用格式模式Unicode Technical Standard #35
所以
- (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyyMMddHHmmss.SSS[Z:z]"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"EST"];
[df setTimeZone:gmt];
return [df stringFromDate:[NSDate date]];
}
输出
20160412021134.302[-0500:EST]
选项 2:
- (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyyMMddHHmmss.SSS[Z:z]"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"EST"];
[df setTimeZone:gmt];
NSString *date = [df stringFromDate:[NSDate date]];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\d+\.\d+\[[+-]?)(0?)(\d)(\d{2})(.*)" options:NSRegularExpressionCaseInsensitive error:nil];
return [regex stringByReplacingMatchesInString:date options:0 range:NSMakeRange(0, date.length) withTemplate:@""];
}
输出:
20160412021134.302[-5:EST]
我正在尝试创建一个如下所示的日期:
19961005132200.124[-5:EST]
这是我正在尝试的:
+ (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"YYYYMMDDHHMMSS.000[ZZ:zzz]"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[df setTimeZone:gmt];
return [df stringFromDate:[NSDate date]];
}
这是返回:
201604103050483.000[+0000:GMT]
在此先感谢您的帮助!
首先为 Unicode specification for date format specifiers 添加书签。
然后看看你需要的每个部分:
- 4 位数年份:yyyy
- 两位数月份:MM
- 两位数的日期:dd
- 24 小时制 2 位数小时:HH
- 2 位数分钟:mm
- 2 位数秒:ss
- 3 位小数秒:SSS
时区有问题,因为除了前导零之外,没有任何说明符可以为您提供冒号之前的部分。最接近的是:x:z
.
随心所欲:yyyyMMddHHmmss.SSS[x:z]
+ (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyyMMddHHmmss.SSS[x:z]"];
return [df stringFromDate:[NSDate date]];
}
如果您希望输出采用用户本地时区,请不要设置格式化程序的时区。
格式字符串使用格式模式Unicode Technical Standard #35
所以
- (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyyMMddHHmmss.SSS[Z:z]"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"EST"];
[df setTimeZone:gmt];
return [df stringFromDate:[NSDate date]];
}
输出
20160412021134.302[-0500:EST]
选项 2:
- (NSString *)getDate {
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyyMMddHHmmss.SSS[Z:z]"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"EST"];
[df setTimeZone:gmt];
NSString *date = [df stringFromDate:[NSDate date]];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\d+\.\d+\[[+-]?)(0?)(\d)(\d{2})(.*)" options:NSRegularExpressionCaseInsensitive error:nil];
return [regex stringByReplacingMatchesInString:date options:0 range:NSMakeRange(0, date.length) withTemplate:@""];
}
输出:
20160412021134.302[-5:EST]