构建 NSDate 时的问题
issue while constructing NSDate
我从这个字符串中得到 NSDate
但每次我从 Selected Month
中得到 Previous Month
我找不到错误:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
[dateFormatter setDateFormat:@"dd/MMM/yyyy"];
NSDate *date = [dateFormatter dateFromString:strDate];
NSLog(@"------Date----%@",date);
我试过很多 Datestrings
一些与日志是:
strDate =---- 01/Jan/2016
------Date----2015-12-31 18:30:00 +0000
strDate =----01/Dec/2015
------Date----2015-11-30 18:30:00 +0000
正如维京人所说,您所看到的是您显示结果日期的方式的产物。当你在 NSLog 中记录一个 NSDate 对象时,它总是以 UTC 显示。如果您的日期没有时间部分,则假定为午夜。如果您的时区在 UTC 之后,您所在时区的午夜将显示为前一天。
我建议您创建一个显示日期格式器来显示结果日期,并使用它:
- (NSString *) displayStringForDate: (NSDate *) date
{
static NSDateFormatter *dateFormatter;
if (dateFormatter == nil)
{
//This date formatter will default to the current time zone, like you want.
dateFormatter = [[NSDateFormatter alloc]init];
//Adjust the date format as desired
{
return [dateFormatter stringFromDate: date];
}
然后在您的测试代码中使用该方法:
NSLog(@"------Date----%@", [self displayStringForDate: date]);
我从这个字符串中得到 NSDate
但每次我从 Selected Month
Previous Month
我找不到错误:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
[dateFormatter setDateFormat:@"dd/MMM/yyyy"];
NSDate *date = [dateFormatter dateFromString:strDate];
NSLog(@"------Date----%@",date);
我试过很多 Datestrings
一些与日志是:
strDate =---- 01/Jan/2016
------Date----2015-12-31 18:30:00 +0000
strDate =----01/Dec/2015
------Date----2015-11-30 18:30:00 +0000
正如维京人所说,您所看到的是您显示结果日期的方式的产物。当你在 NSLog 中记录一个 NSDate 对象时,它总是以 UTC 显示。如果您的日期没有时间部分,则假定为午夜。如果您的时区在 UTC 之后,您所在时区的午夜将显示为前一天。
我建议您创建一个显示日期格式器来显示结果日期,并使用它:
- (NSString *) displayStringForDate: (NSDate *) date
{
static NSDateFormatter *dateFormatter;
if (dateFormatter == nil)
{
//This date formatter will default to the current time zone, like you want.
dateFormatter = [[NSDateFormatter alloc]init];
//Adjust the date format as desired
{
return [dateFormatter stringFromDate: date];
}
然后在您的测试代码中使用该方法:
NSLog(@"------Date----%@", [self displayStringForDate: date]);