我在使用NSDate时遇到了一个奇怪的问题,当我尝试从设备中获取日期时,有时会显示某些版本的上个月
这是我的一大堆代码供参考
NSDate *date = [NSDate date];
NSDateFormatter *dateF = [[NSDateFormatter alloc]init];
[dateF setDateFormat:@" dd.MM.yyyy "];
NSString *selectedDate = [dateF stringFromDate:date];
感谢所有投入,谢谢
答案 0 :(得分:3)
为避免以后本地化问题,您可以使用NSCalendar及其方法components:fromDate:
这样的事情:
NSCalendar * calendar = [NSCalendar currentCalendar];
NSDateComponents * components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:[NSDate date]];
NSString * stringDate = [NSString stringWithFormat:@"%d.%d.%d", components.day, components.month, components.year];
答案 1 :(得分:2)
NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"hh:mma dd/MMM"];
NSString *dateString = [dateFormat stringFromDate:today];
NSLog(@"date: %@", dateString);
[dateFormat release];
答案 2 :(得分:0)
这是Apple的一个例子,所以看起来你的大写/小写正确
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];
您确定您的设备的日期设置正确吗?您是否尝试过设置NSDateFormatter的语言环境?
编辑:
在评论中解决您的问题:NSDate是一个时间点,与时区,日历等无关。 NSCalendar和NSDateFormatter允许您将此时间点转换为在给定时区内具有给定日历的正确表示。