Ios 将日历日期转换为正确的日期
我正在开发一个使用日历创建警报的应用程序。我可以在正确的日期正确设置闹钟。例如,我为2017年5月4日下午1点设置了报警 当我尝试获取日历事件时,它会返回UTC中的其他日期Ios 将日历日期转换为正确的日期,ios,objective-c,xcode,calendar,nsdate,Ios,Objective C,Xcode,Calendar,Nsdate,我正在开发一个使用日历创建警报的应用程序。我可以在正确的日期正确设置闹钟。例如,我为2017年5月4日下午1点设置了报警 当我尝试获取日历事件时,它会返回UTC中的其他日期 如您所见,它在UTC的同一天返回我上午10点的。我想知道,当我试图从日历中获取确切日期时,如何获取该日期。//除了此代码之外,您可能还需要设置时区 NSDateFormatter *format = [[NSDateFormatter alloc] init]; [format setDateFormat:@"MMM-dd
如您所见,它在UTC的同一天返回我上午10点的
。我想知道,当我试图从日历中获取确切日期时,如何获取该日期。//除了此代码之外,您可能还需要设置时区
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
在我们更改其他日期之前始终采用当前时区。如果打印Date
可能会显示不同的日期,但实际上它采用当前时区。您需要更正时区,也许在自定义日历中设置时区会有所帮助。这应该会有所帮助,您只需要将日期转换为当前时区: