簡體   English   中英

設備時間格式為24小時時,從NSString轉換為NSDate時獲得錯誤的時間

[英]Getting wrong time while converting from NSString to NSDate When Device Time format is 24hr

在以下代碼中,我嘗試將NSString轉換為NSDate然后再次轉換為另一種Date格式並將其發送到服務器。

當我的設備時間格式為12小時時,以下代碼可以正常工作。 [dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"];格式為[dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"]; 它給我正確的日期和時間。

但是,一旦我將設備時間格式更改為24小時。 並將datefomatter更改為[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm a"]; 它給出了錯誤的日期和時間(特別是時間)。我已經顯示了代碼的日志值。

我檢查了很多有關NSDateFormatter以及將NSString轉換為NSDate的stackoverflow問題。 但是我無法找出我在哪里犯錯,以及當我的設備時間格式為24小時時為什么會給我錯誤的時間。 請幫助我解決此問題。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm a"];
NSString *fromTime = [NSString stringWithFormat:@"%@",@"04-Jul-2017 01:46 PM"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:fromTime];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSString *setdtFrom=[dateFormatter stringFromDate:dateFromString];
NSLog(@"From DateTime %@",setdtFrom);

以下日志顯示“我的設備時間”格式為12小時時的日期和時間。 這是正確的。
從DateTime 2017-07-04T13:46:00

我的設備時間格式為24小時時的時間。 這是錯誤的(特別是時間)。
從DateTime 2017-07-04T12:46:00

請嘗試設置地區和時區

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"];
    [dateFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"]];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    NSString *fromTime = [NSString stringWithFormat:@"%@",@"04-Jul-2017 01:46 PM"];
    NSDate *dateFromString = [dateFormatter dateFromString:fromTime];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
    NSString *setdtFrom=[dateFormatter stringFromDate:dateFromString];
    NSLog(@"From DateTime %@",setdtFrom);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM