我需要显示当前的日期和时间。
我用过;
NSDate *currentDateNTime = [NSDate date];
我想拥有当前的日期和时间(应该显示系统时间而不是GMT时间)。
输出应采用NSDate
格式,而不是NSString
。
;
NSDate *currentDateNTime = [NSDate date];
// Do the processing....
NSDate *nowDateAndTime = .....; // Output should be a NSDate and not a NSString
答案 0 :(得分:7)
由于所有NSDate都是GMT引用,您可能需要这样: (不要忘记nowDate不会是当前系统的实际日期时间,但它会“移位”,所以如果你使用NSDateFormatter生成NSString,你会看到错误的日期)
NSDate* currentDate = [NSDate date];
NSTimeZone* currentTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* nowTimeZone = [NSTimeZone systemTimeZone];
NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:currentDate];
NSInteger nowGMTOffset = [nowTimeZone secondsFromGMTForDate:currentDate];
NSTimeInterval interval = nowGMTOffset - currentGMTOffset;
NSDate* nowDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:currentDate];
答案 1 :(得分:5)
每个时刻都是世界各地的同一时刻 - 它只是表示为不同时区的不同时钟时间。因此,您无法将日期更改为表示时区中某个时间的其他日期;您必须使用您所在的时区提供的NSDateFormatter
。结果字符串是您的位置时钟时间表示的时刻。
在GMT中完成所有需要的计算,只需使用格式化程序进行显示。
答案 2 :(得分:1)
值得一读 using this answer
最近有人来到这里的一些有用的资源:
Apple日期和时间编程指南如果您正在对日期和时间做任何严肃的事情,请阅读它。 Does [NSDate date] return the local date and time?
具有大量实用程序的NSDate上的有用类别允许基于现有日期生成~new_date。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html#//apple_ref/doc/uid/10000039i?language=objc
还有该类别的快速版本 https://github.com/erica/NSDate-Extensions
答案 3 :(得分:0)
你需要一个NSDateFormatter并调用stringFromDate这个方法来获取你日期的字符串。
NSDateFormatter *dateformater = [[NSDateFormatter alloc] init];
[dateformater setDateFormat:@"yyyyMMdd,HH:mm"];
NSString *str = [dateformater stringFromDate: currentDateNTime];
答案 4 :(得分:-1)
使用此方法
-(NSDate *)convertDateToDate:(NSDate *) date
{
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
NSDate *nowDate = [[[NSDate alloc] init] autorelease];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[formatter setDateFormat:@"yyyy-MM-d H:m:s"];
NSString * strdate = [formatter stringFromDate:date];
nowDate = [formatter dateFromString:strdate];
return nowDate;
}
这可能会让你得到你想要的东西。
我希望你能帮到你。