【问题标题】:NSString to NSDate conversion problemNSString 到 NSDate 的转换问题
【发布时间】:2010-09-17 19:28:40
【问题描述】:

我有一个 NSString 对象,我在 NSDateFormatter 的帮助下将其转换为 NSDate。现在代码在所有操作系统上都可以正常工作,但它在客户端添加(美国地区)创建不同的输出。 这是我正在使用的代码。

NSDateFormatter *formate = [[[NSDateFormatter alloc] init] autorelease];
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strConcat = @"2010-09-24 17:30:00";
NSDate *date = [formate dateFromString:strConcat];
NSLog(@"Output :%@",date);

我的输出------2010-09-24 17:30:00 - 0700 客户端输出----2010-09-25 00:30:00 GMT 谁能提出问题出在哪里?

谢谢 普拉蒂克·戈斯瓦米

【问题讨论】:

    标签: iphone nsdate


    【解决方案1】:

    我注意到的唯一输出差异是时间不同。如果您没有明确设置格式化程序的timeZone 属性,它将使用系统的本地时区。如果您希望您和您的客户的时间完全相同:

    [formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    

    这将确保输出始终为 GMT。

    【讨论】:

      【解决方案2】:

      您需要手动设置NSDateFormatter 的区域设置,以便您的所有用户看到相同的格式化字符串。否则,格式化程序将使用为设备设置的任何语言环境。

      【讨论】:

        【解决方案3】:

        实际上,它工作正常。这两个日期是等价的,只是一个在美国/山地时区,另一个在格林威治时区。 (下午 5:30 + 7 小时 = 上午 12:30)

        这里有什么问题?

        【讨论】:

          【解决方案4】:

          在 iOS2.x 和 3.x 中,description/datefromstring 函数返回: 2010-09-24 17:30:00 - 0700

          在 iOS 4.x 中它返回: 2010-09-25 00:30:00 GMT

          您可以向苹果提交错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多