Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将日历日期转换为正确的日期_Ios_Objective C_Xcode_Calendar_Nsdate - Fatal编程技术网

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

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

我正在开发一个使用日历创建警报的应用程序。我可以在正确的日期正确设置闹钟。例如,我为2017年5月4日下午1点设置了报警

当我尝试获取日历事件时,它会返回UTC中的其他日期


如您所见,它在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
可能会显示不同的日期,但实际上它采用当前时区。

您需要更正时区,也许在自定义日历中设置时区会有所帮助。这应该会有所帮助,您只需要将日期转换为当前时区: