iOS: NSDateFormatter 当前日期以毫秒显示破折号

iOS: NSDateFormatter current date with millisecond showing dashes

我正在尝试实现 NSDate 以生成具有以下格式的当前日期:

 2017-06-14T15:38.000Z

我尝试了以下实现:

-(void)currentDate
{
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [NSDateFormatter new];
    NSTimeZone *destinationTimeZone = [NSTimeZone systemTimeZone];
    formatter.timeZone = destinationTimeZone;
    [formatter setDateStyle:NSDateFormatterLongStyle];
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.ZZZ"];
    NSString *dateString = [formatter stringFromDate:date];
    NSLog(@"%@",dateString);
}

但这是我得到的格式日期字符串:

2017-06-14T14:08:56.-0700

任何人都知道如何设置我的 NSDateFormatter 以获得以下日期格式:

2017-06-14T15:38.000Z

非常感谢你的帮助。

您正在将 NSDateFormatter 的时区设置为 systemTimeZone。因此输出始终是您设备的时区(-7h w.r.t UTC 时间)。

修复方法如下:

-(void)currentDate
{
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [NSDateFormatter new];
    NSTimeZone *destinationTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    formatter.timeZone = destinationTimeZone;
    [formatter setDateStyle:NSDateFormatterLongStyle];
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.ZZZ"];
    NSString *dateString = [formatter stringFromDate:date];
    NSLog(@"%@",dateString);
}

输出:

2017-06-15T05:11:35.+0000