【问题标题】:How to remove the timezone offset from an NSDate如何从 NSDate 中删除时区偏移
【发布时间】:2016-08-24 14:07:18
【问题描述】:

我正在尝试从 NSDateFormatter 获取 yyyy-MM-dd HH:mm

但是字符串吐出Historical Date: 2016-08-23 14:03:00 +0000

我不想要秒数或 +0000。

我做错了什么?

int seconds = -( days * (24 * 60 * 60)); //24 hours, times 60 minutes, times 60 seconds
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd HH:mm"];

NSString* stringFromDate = [format stringFromDate:[NSDate date]];
NSDate * pastDate = [[format dateFromString:stringFromDate] dateByAddingTimeInterval:seconds];

NSLog(@"Date: %@", pastDate);

【问题讨论】:

  • 因为 NSDate 会得到 +0000,所以 NSString 不会得到它。

标签: ios objective-c datetime nsdate nsdateformatter


【解决方案1】:

这是因为您打印了NSDate 对象。 NSDate 对象封装了一个时间点,它不负责它的字符串表示。 您真正需要做的是计算出您需要的确切日期,然后将其格式化为NSString

类似的东西:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *pastDate = [[NSDate date] dateByAddingTimeInterval:seconds];

NSString *yourDateInString = [dateFormatter stringFromDate:pastDate];
NSLog(@"%@", yourDateInString);

此外,使用NSCalendarNSCalendarComponents 来处理日期并计算新日期而不是仅仅添加时间间隔是一种很好的做法。

【讨论】:

  • 完美!下次我会记得在格式化之前计算时间。关心一个简单的例子吗?是否向后兼容 iOS 7?
【解决方案2】:

我先尝试了你的编码

 int seconds = -( 24 * (24 * 60 * 60)); //24 hours, times 60 minutes, times 60 seconds
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd HH:mm"];
NSString* stringFromDate = [format stringFromDate:[NSDate date]];
NSDate * pastDate = [[format dateFromString:stringFromDate] dateByAddingTimeInterval:seconds];
NSLog(@"The pastDate is - %@",pastDate);

打印出来的结果是

The pastDate is - 2016-07-31 14:30:00 +0000

NSDate 得到 +0000

然后我尝试使用字符串

NSString *stringDate = [format stringFromDate:pastDate];
NSLog(@"The Date is: %@", stringDate);

现在打印出来的结果是

The Date is: 2016-07-31 20:00

字符串没有+0000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多