【问题标题】:NSDateFormatter and Time Zone issue?NSDateFormatter 和时区问题?
【发布时间】:2012-01-16 13:56:48
【问题描述】:

我有一个带有 GMT 时间的字符串,我想根据系统时区制作它,但它不能正常工作 -

NSLog(@"Time Str = %@",Time);

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm a"];

[NSTimeZone resetSystemTimeZone];

NSLog(@"system time zone = %@",[NSTimeZone systemTimeZone]);

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

NSDate *date = [dateFormat dateFromString:Time];

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
NSLog(@"date from string = %@",date);
NSLog(@"string from date = %@",[dateFormat stringFromDate:date]);

控制台输出 -

/////////////////////////////////////// ////////////////////////////////////////

时间 Str = 09-12-2011 07:57 AM

系统时区 = 亚洲/加尔各答 (IST) 偏移量 19800

字符串中的日期 = 2011-12-09 02:27:00 +0000

日期字符串 = 09-12-2011 07:57 AM

/////////////////////////////////////// ////////////////////////////////////////

加尔各答距格林威治标准时间 +5:30,因此日期时间应为 1:27,但显示为 02:27。此外,当我从该日期获取一个字符串时,它向我显示了我用来制作日期的相同刺痛,我希望根据系统时区更新字符串。

谢谢

【问题讨论】:

  • 如果应该是 02:27,因为 7:57 - 5:30 = 2:27,而不是 1:27。

标签: iphone objective-c timezone nsdate nsdateformatter


【解决方案1】:

如果日期字符串是格林威治标准时间,则不能使用系统时区从 NSString 创建 NSDate。

替换第一次出现的[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

【讨论】:

  • 如果我想让我的应用程序在任何时区的任何地方工作,那么我应该怎么做?
  • 您需要使用标准的 GMT 时区,并根据需要将其转换为当地时区。
猜你喜欢
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多