【问题标题】:NSCalendar dateWithComponents Giving Wrong DateNSCalendar dateWithComponents 给出错误的日期
【发布时间】:2011-04-05 13:51:52
【问题描述】:

我必须用 dateComponents 详细说明日期:

int year;
int month;
int day;
int hour;
int minute;
int second;
NSCalendar *calendar;
NSDate *actualDate;
NSDate *itemDate;
NSDateComponents *dateComps;
NSDateFormatter *dateFormatter;
UILocalNotification *sveglia;

actualDate = [NSDate date];
calendar = [[NSCalendar currentCalendar] copy];
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[calendar timeZone]];
[dateFormatter setDateFormat:@"yyyy"];
year = [[dateFormatter stringFromDate:actualDate] intValue];
[dateFormatter setDateFormat:@"MM"];
month = [[dateFormatter stringFromDate:actualDate] intValue];
[dateFormatter setDateFormat:@"dd"];
day = [[dateFormatter stringFromDate:actualDate] intValue];
[dateFormatter setDateFormat:@"HH"];
hour = [[dateFormatter stringFromDate:actualDate] intValue];
[dateFormatter setDateFormat:@"mm"];
minute = [[dateFormatter stringFromDate:actualDate] intValue];
[dateFormatter setDateFormat:@"ss"];
second = [[dateFormatter stringFromDate:actualDate] intValue];
dateComps = [[NSDateComponents alloc] init];
[dateComps setTimeZone:[calendar timeZone]];
[dateComps setDay:day];
[dateComps setMonth:month];
[dateComps setYear:year];
[dateComps setHour:hour];
[dateComps setMinute:minute];
// Obtaining date from components.
itemDate = [calendar dateFromComponents:dateComps];
NSLog(@"ItemDate: %@", itemDate);

日历具有正确的时区,日期的所有组件都是正确的。好, 无论我做什么,itemDate 对象都有格林威治时区(+0000)。我该如何解决这个问题?

【问题讨论】:

    标签: objective-c cocoa-touch ios4 nscalendar


    【解决方案1】:

    已解决...自从日期正确后,问题就不存在了,NSDate 描述始终给出 GMT 时间的输出。 要查看您应该使用 descriptionWithLocale 的正确格式,请查看该文档的文档。

    Source

    【讨论】:

    • 如果您解决了问题,请不要忘记将您的问题标记为已回答!
    • 我会,但我不能直到明天:)
    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2011-05-18
    • 2019-05-12
    • 2017-03-25
    • 1970-01-01
    • 2020-01-22
    • 2011-07-15
    相关资源
    最近更新 更多