Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将NSDate格式化为YYYYMMDDHHMMSS.XXX[gmt偏移量[:tz名称]]_Ios_Timestamp_Nsdate_Nsdateformatter - Fatal编程技术网

Ios 将NSDate格式化为YYYYMMDDHHMMSS.XXX[gmt偏移量[:tz名称]]

Ios 将NSDate格式化为YYYYMMDDHHMMSS.XXX[gmt偏移量[:tz名称]],ios,timestamp,nsdate,nsdateformatter,Ios,Timestamp,Nsdate,Nsdateformatter,我正在尝试创建一个如下所示的日期: 19961005132200.124[-5:EST] 以下是我正在尝试的: + (NSString *)getDate { NSDateFormatter* df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"YYYYMMDDHHMMSS.000[ZZ:zzz]"]; NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviati

我正在尝试创建一个如下所示的日期:

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]
提前感谢您的帮助

开始时,请将该文件添加到书签中

然后查看您需要的每个零件:

  • 四位数年份:yyyy
  • 两位数月份:MM
  • 两位数字日:dd
  • 24小时两位数小时:HH
  • 2位分钟:毫米
  • 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]];
}

如果希望输出位于用户的本地时区,请不要设置格式化程序的时区。

格式字符串使用格式模式

所以

输出

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:@"$1$3$5"];
}
输出:

20160412021134.302[-5:EST]

从读取日期格式说明符的文档开始。每个字母的大小写都很重要。不要只将其全部大写。当您似乎希望输出在本地时区时,为什么要将日期格式化程序的时区设置为GMT?
20160412021134.302[-5:EST]