gpt4 book ai didi

iOS Dateformatter 时区

转载 作者:行者123 更新时间:2023-11-29 12:19:43 28 4
gpt4 key购买 nike

我正在尝试将不带时区值(例如“31.05.2015”)的字符串转换为 NSDate。

我的 DateFormatter 有什么问题?它返回日期 2015-05-31 22:00:00 +0000当我尝试使用相同的格式化程序打印它时,它会打印:01.06.2015

-(NSDateFormatter*) dateFormatter{
if(!_dateFormatter){
_dateFormatter = [[NSDateFormatter alloc]init];
[_dateAndTimeFormatter setDateFormat:@"dd.MM.yyyy"];
[_dateAndTimeFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CEST"]];
_dateFormatter.dateStyle = NSDateFormatterShortStyle;
_dateFormatter.timeStyle = NSDateFormatterNoStyle;
}
return _dateFormatter;
}

编辑

我更新为

-(NSDateFormatter*) dateAndTimeFormatter{
if(!_dateAndTimeFormatter){
_dateAndTimeFormatter = [[NSDateFormatter alloc]init];
[_dateAndTimeFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS Z"];
_dateAndTimeFormatter.dateStyle = NSDateFormatterShortStyle;
_dateAndTimeFormatter.timeStyle = NSDateFormatterShortStyle;
}
return _dateAndTimeFormatter;
}

并调用它

NSDate *startDate = [self.dateFormatter dateFromString:@"31.05.2015"];
self.beginningValueLabel.text = [self.dateFormatter stringFromDate:startDate];

结果仍然是 01.06.2015。

开始日期是 2015-05-31 22:00:00 +0000

最佳答案

当您使用 [NSDateFormatter setTimeZone:] 时,格式化程序将根据新时区调整显示日期,因此它会在格式化显示之前将时区偏移量添加到日期。

NSDateFormatter 默认为设备的时区,因此它与手动设置时区具有相同的效果。告诉 DateFormatter 使用与日期相同的时区 (+0000)。

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]

关于iOS Dateformatter 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980857/

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