我需要显示具体时区的日期,包括 DST(欧洲时间)。应用程序将在立陶宛使用,因此时区为夏季+3,其他时间+2。问题是,我只有一个日期列表,我不知道如何为夏季日期显示 +3 为其他日期显示 +2。目前,我有时区:
// Eastern European Summer Time UTC + 3 hours
NSTimeZone *timeZoneWithDst = [NSTimeZone timeZoneWithAbbreviation:@"EEST"];
//Eastern European Time UTC + 2 hours
NSTimeZone *timeZoneWithoutDst = [NSTimeZone timeZoneWithAbbreviation:@"EET"];
但是如何遍历我的日期列表并计算我应该添加 +3 还是 +2 到日期?
更新最后,我通过应用 Martin R. 建议按名称使用时区,而不是通过缩写来实现它。这样,具有该时区的日期会自动处理 DST。这是我转换日期的代码:
NSTimeZone *TimeZone = [NSTimeZone timeZoneWithName:@"Europe/Vilnius"];
NSInteger seconds = [myTimeZone secondsFromGMTForDate:someDate];
NSDate *result = [NSDate dateWithTimeInterval:seconds sinceDate:someDate];