我正在使用此字符串NSDate
,但每次我从Previous Month
获取Selected 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
答案 0 :(得分:1)
正如维京人所说,你所看到的是你显示结果日期的方式。在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]);