如何使用defaulttimezone输出当前日期和时间? 当我使用以下代码时,我总是在GMT中获得时间。是否可以将NSDate转换为defaulttimezone?我无法使用NSDateFormatter,因为我需要一个具有正确时间的NSDate对象。
NSDate *date = [NSDate date];
NSLog(@"Time: %@", date);
输出:2010-09-26 12:07:12 TimeTest [2641:207]时间:2010-09-26 12:07:12 GMT
更新 当我必须在合适的时间返回NSDate对象时,如何将NSDateFormatter与setTimeZone一起使用?
NSDate* date = [NSDate date];
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSTimeZone *tz = [NSTimeZone timeZoneWithName:@"MESZ"];
[formatter setTimeZone:tz];
NSString *datestr = [formatter stringFromDate:date];
NSLog(@"%@", datestr);
NSDate *datenew = [formatter dateFromString:str];
NSLog(@"%@", datenew);
第一个NSLog输出正确的时间,但是当我想用正确的时间制作一个NSDate对象时,我又得到了错误的时间。
答案 0 :(得分:2)
我无法使用NSDateFormatter,因为我需要一个具有正确时间的NSDate对象。
这没有任何意义。 NSDate
表示单个时间点。它不知道也不关心时区。例如,今天,格林尼治标准时间12:00和今天,06:00-0600将由同一个NSDate
对象表示。
要在特定时区显示日期,请使用NSDateFormatter
,特别是其setTimeZone:
方法。
答案 1 :(得分:1)
有时你想要拥有当前时间([NSDate日期],但是它已经转换为你的时区,而不仅仅是为用户格式化,而是用它进行计算。我想出了这个简单的溶液:
double timeDifference = [[NSTimeZone systemTimeZone] secondsFromGMT];
double now = [[NSDate date] timeIntervalSince1970] + timeDifference;
在我的时区中获取当前timeInterval非常有用。就我而言,日期都非常灵活和动态,并没有与任何日历相关联。我正在与开始时间相关的时间工作。
难以解释。无论如何,也许一些有我问题的人,他们最后都在这篇文章中,现在也有他们的答案。