2017-05-04 121 views
-1

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

当我尝试获取日历事件时,它会以UTC为单位返回其他一些日期。

enter image description here

正如你所看到的,它返回我10 AM与UTC同一天。我想知道如何从日历中获取确切的日期。

+0

您需要更正时区,或许在自定义日历中设置时区可能会有帮助。 – NeverHopeless

+0

这应该有所帮助,你只需要将日期转换为当前时区即可:http://stackoverflow.com/questions/29392874/converting-utc-date-format-to-local-nsdate – SeanLintern88

回答

1

你只需要转换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]; 
-1

//除了此代码,您可能还必须设置timeZone。

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

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

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

Date始终把当前时区,直到我们改变other.If我们打印Date它可能会表现出不同,但实际上它需要的电流。