将日历日期转换为正确的日期

Converting calendar date to the correct date

我正在开发一个使用日历创建提醒的应用程序。我可以在正确的日期正确设置闹钟。例如,我为4th of May 2017 1 PM设置了闹钟。

什么时候,我尝试获取日历事件 returns 我在 UTC 中的其他日期。

如您所见,它 returns 我 10 AM 与 UTC 在同一天。我想知道当我尝试从日历中获取它时如何获取准确的日期。

// 除此代码外,您可能还必须设置时区。

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM-dd-yyyy"];

NSDate *now = [[NSDate alloc] init];

NSString *dateString = [format stringFromDate:now];
    NSLog(@"%@",dateString);

您只需将 UTC 转换为 您当地的时区

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDate *date1 = [dateFormatter dateFromString:@"2017-05-04 10:00:00"];

// change to a readable time format and change to local time zone
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm a"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *strCurrentLocalTimezoneDate = [dateFormatter stringFromDate:date1];

Date 始终采用当前时区,直到我们更改 other.If 我们打印 Date 它可能显示不同但实际上它采用当前时区。