0

我是 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);

我想听听你解决这个问题。谢谢你的时间。

4

2 回答 2

0

将时区设置为 UTC

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];
于 2012-05-04T16:21:03.017 回答
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);

谢谢你。

于 2012-05-07T09:19:26.080 回答