如何从设备获取当前日期?

时间:2011-11-11 11:07:13

标签: iphone objective-c ios nsdate

我在使用NSDate时遇到了一个奇怪的问题,当我尝试从设备中获取日期时,有时会显示某些版本的上个月

这是我的一大堆代码供参考

    NSDate *date = [NSDate date];
    NSDateFormatter *dateF = [[NSDateFormatter alloc]init]; 
    [dateF setDateFormat:@" dd.MM.yyyy "];  
    NSString *selectedDate = [dateF stringFromDate:date];

感谢所有投入,谢谢

3 个答案:

答案 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允许您将此时间点转换为在给定时区内具有给定日历的正确表示。