获得没有时间部分或时区差异的时间

时间:2012-05-04 14:54:53

标签: iphone xcode

我是iWorld的iOS开发者。 我以前开发过几款iPhone / iPad应用程序。 我无法在iPhone上多次获得正确的时间信息。我认为这是由于本地化。

例如,我有代码来获取今天的时间截断。 (例如:“05-04-2012 00:00:00”) 但该代码总是在8小时前返回到我预期的状态。 (例如:“05-03-2012 16:00:00”) 我工作的代码如下。

NSDate *today = [NSDate date];
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calender components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
today = [calender dateFromComponents:components];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
NSString *todayString = [formatter stringFromDate:today];
NSLog(@"Today is %@", todayString);

我想听听您解决此问题。 谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

将时区设为UTC

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];

答案 1 :(得分:0)

我发现计算正确的午夜时间的代码。 现在我发现以下代码记录“今天是05-07-2012 00:00:00”而不是“05-06-2012 16:00:00”

NSDate *today = [NSDate date];
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calender components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
today = [calender dateFromComponents:components];

today = [today dateByAddingTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
NSString *todayString = [formatter stringFromDate:today];
NSLog(@"Today is %@", todayString);

谢谢你。