gpt4 book ai didi

ios - 编译日期 (__DATE__) 返回昨天的日期

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:16:40 35 4
gpt4 key购买 nike

为了显示构建日期,我使用了这些代码:

    NSString *compileDate = [NSString stringWithUTF8String:__DATE__];
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"MMM d yyyy"];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[df setLocale:usLocale];
NSDate *date = [df dateFromString:compileDate];


[df setDateFormat:@"yyyy"];
self.backgroundColor = [UIColor clearColor];
self.textAlignment = NSTextAlignmentCenter;
self.text = [NSString stringWithFormat:@"© Copyright 2009-%@ Version %@ %@", [df stringFromDate:[NSDate date]], VERSION, date ];

今天是2014/03/15 返回2014/03/14

enter image description here

我的设备设置在美国位置。我找不到问题所在!

注意:编译时间总是20:30:00 +00:00!

我该如何解决?

最佳答案

虽然您的地区可能是美国,但您的时区是伊朗的时区,即 UTC+03:30。

您正在从仅包含日期部分的字符串创建 NSDate。所以这个日期的时间部分将被设置为午夜。此外,日期将以您的本地时间创建。现在是午夜,伊朗时间。

当您将 description 发送到 NSDate(就像您使用 %@ 格式说明符一样)时,返回的 NSString 将使用 UTC 时区(末尾的 +0000)进行格式化

而午夜,即伊朗时间 00:00:00,减去时区偏移 03:30:00 就是前一天的 20:30:00。

您应该使用另一个 NSDateFormatter 来格式化构建日期。

例如:

NSDateFormatter *compileDayFormatter = [[NSDateFormatter alloc] init];
compileDayFormatter.dateStyle = NSDateFormatterShortStyle;

NSString *versionInfo = [NSString stringWithFormat:@"© Copyright 2009-%@ Version %@ %@", [df stringFromDate:[NSDate date]], VERSION, [compileDayFormatter stringFromDate:date]];

或者,如果您不关心区域设置感知日期,只需使用 compileDate 字符串即可。

关于ios - 编译日期 (__DATE__) 返回昨天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22421704/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com