【问题标题】:incompatible pointer type sending NSString to parameter of type NSDate* _Nonnull ios Objective c不兼容的指针类型将 NSString 发送到 NSDate* _Nonnull ios Objective c 类型的参数
【发布时间】:2016-07-12 13:17:19
【问题描述】:

我有以下代码。这里我尝试了两种方法来获取日期和时间。如果我使用格式化程序,它会给我上述错误。如果我不使用它,日期格式不正确,加上我得到的时间也不正确。请帮忙。

NSDate *pickupHoursLate;
NSDate *dropHoursLate;

formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"];
NSLog(@"Old Date and Time : %@",[formatter stringFromDate:[NSDate date]]);

这给了我这样的输出 12-07-2016 18:32 这是我想要的

NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *components = [[NSDateComponents alloc] init];
    int pickHoursToAdd = [[[NSUserDefaults standardUserDefaults] objectForKey:@"pickupPriorTimePeriod"] intValue];
    [components setHour:pickHoursToAdd];
    pickupHoursLate = [calender dateByAddingComponents:components toDate:[formatter stringFromDate:[NSDate date]] options:0];    

这条线给了我错误

int dropHoursToAdd = [[[NSUserDefaults standardUserDefaults] objectForKey:@"dropPriorTimePeriod"] intValue];
[components setHour:dropHoursToAdd];
dropHoursLate = [calender dateByAddingComponents:components toDate:[NSDate date] options:0];   

在当前时间加上 2 小时后,这条线给我的值 2016-07-12 15:02:51 +0000 但这里的时间不正确

【问题讨论】:

    标签: ios objective-c nsdate


    【解决方案1】:

    试试这个....

        NSDate *pickupHoursLate;
    NSDate *dropHoursLate;
    
    formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd-MM-yyyy HH:mm"];
    [formatter setTimeZone:[NSTimeZone systemTimeZone]];
    NSLog(@"Old Date and Time : %@",[formatter stringFromDate:[NSDate date]]); **<this give me output like this 12-07-2016 18:32 which I want>**
    NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *components = [[NSDateComponents alloc] init];
    int pickHoursToAdd = [[[NSUserDefaults standardUserDefaults] objectForKey:@"pickupPriorTimePeriod"] intValue];
    [components setHour:pickHoursToAdd];
    
    //Editing start
    NSString *dateStr = [formatter stringFromDate:[NSDate date]] ;
    NSDate *date = [formatter dateFromString:dateStr];
        pickupHoursLate = [calender dateByAddingComponents:components toDate: date options:0];    **<This Line gives me the error>**
    //Editing  End
    
    int dropHoursToAdd = [[[NSUserDefaults standardUserDefaults] objectForKey:@"dropPriorTimePeriod"] intValue];
    [components setHour:dropHoursToAdd];
    dropHoursLate = [calender dateByAddingComponents:components toDate:[NSDate date] options:0];   **<This Line gives me the value "2016-07-12 15:02:51 +0000" after adding 2 hrs to current time but here the time is incorrect>**
    

    【讨论】:

    • dateStr 打印描述:12-07-2016 19:04 date 打印描述:2016-07-12 13:34:00 +0000 self->pickupHoursLate 打印描述:2016-07- 12 19:34:00 +0000 还是一样的问题来了
    • 好的,知道了...更改了代码,立即查看...将 timeZone 添加到格式化程序
    • dateStr的打印描述:12-07-2016 19:11 date的打印描述:2016-07-12 13:41:00 +0000 self->pickupHoursLate的打印描述:2016-07- 12 19:41:00 +0000
    • dateStr 给出了正确的日期。但是将其转换为日期时,我得到的值不正确。
    • 检查是否可以更改系统时区
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多