iphone - 将日期和时间组合成单个 NSDate 的问题

标签 iphone ios ipad calendar

我正在尝试将一个 NSDate 的时间值(小时、分钟、秒)与第二个 NSDate 的日期值(日、月、年)结合起来用这个方法:

+ (NSDate *)combineDate:(NSDate *)date withTime:(NSDate *)time {

    NSCalendar *gregorian = [[NSCalendar alloc]
        initWithCalendarIdentifier:NSGregorianCalendar];

    NSDateComponents *dateComponents = [gregorian components:(NSDayCalendarUnit | 
        NSWeekdayCalendarUnit) fromDate:date];
    NSDateComponents *timeComponents = [gregorian components:(NSDayCalendarUnit | 
        NSWeekdayCalendarUnit) fromDate:time];

    NSDateComponents *comp = [NSDateComponents alloc];
    [comp setSecond:[timeComponents second]];
    [comp setHour:[timeComponents hour]];
    [comp setMinute:[timeComponents minute]];
    [comp setYear:[dateComponents year]];
    [comp setMonth:[dateComponents month]];
    [comp setDay:[dateComponents day]];

    NSDate *combDate = [gregorian dateFromComponents:comp]; 

    [gregorian release];
    [comp release];

    return combDate;
}

...但它返回的实际上是乱码(例如,年份显示为“1”)。有人看出这种方法有什么问题吗?

最佳答案

我使用了错误的日历组件。这是更正后的函数(现在用于 ARC):

+ (NSDate *)combineDate:(NSDate *)date withTime:(NSDate *)time {

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:
        NSGregorianCalendar];

    unsigned unitFlagsDate = NSYearCalendarUnit | NSMonthCalendarUnit 
        |  NSDayCalendarUnit;
    NSDateComponents *dateComponents = [gregorian components:unitFlagsDate 
        fromDate:date];
    unsigned unitFlagsTime = NSHourCalendarUnit | NSMinuteCalendarUnit 
        |  NSSecondCalendarUnit;
    NSDateComponents *timeComponents = [gregorian components:unitFlagsTime 
        fromDate:time];

    [dateComponents setSecond:[timeComponents second]];
    [dateComponents setHour:[timeComponents hour]];
    [dateComponents setMinute:[timeComponents minute]];

    NSDate *combDate = [gregorian dateFromComponents:dateComponents];   

    return combDate;
}

关于iphone - 将日期和时间组合成单个 NSDate 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979462/

相关文章:

iphone - 分段表转 JSON

ios - 渐进式下载和缓存

iphone - ASIHTTPRequest completionBlock + ARC

iphone - Objective-C 私有(private)实例变量定义

ios - MPMusicPlayerController.systemMusicPlayer setQueue 困难

ios - 放大核心图时更改majorIntervalScale

html - 网站在 IPAD 上没有响应,媒体查询不起作用

iphone - Plist 到 UITableView

iphone - php web 服务无法从 iPhone 应用程序获取数据

ios - 如何从 View 中完全关闭 uialertcontroller?