将日历日期转换为正确的日期
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
它可能显示不同但实际上它采用当前时区。
我正在开发一个使用日历创建提醒的应用程序。我可以在正确的日期正确设置闹钟。例如,我为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
它可能显示不同但实际上它采用当前时区。