当设备时间格式为 24 小时时,从 NSString 转换为 NSDate 时出现错误时间
Getting wrong time while converting from NSString to NSDate When Device Time format is 24hr
在下面的代码中,我试图将 NSString
转换为 NSDate
并再次转换为另一种日期格式并将其发送到服务器。
当我的设备时间格式为 12 小时时,以下代码运行良好。将日期格式设置为 [dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"];
它给了我正确的日期和时间。
但是一旦我将设备时间格式更改为 24 小时制。并将 datefomatter 更改为 [dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm a"];
它给出了错误的日期和时间(特别是时间。)我已经显示了代码的日志值。
我检查了很多关于 NSDateFormatter
和 NSString
到 NSDate
的转换的 Whosebug 问题。但是当我的设备时间格式为 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 小时时的日期和时间。这是正确的。
从日期时间 2017-07-04T13:46:00
当我的设备时间格式为 24 小时时的时间。而且是错误的(具体时间)。
从日期时间 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);
在下面的代码中,我试图将 NSString
转换为 NSDate
并再次转换为另一种日期格式并将其发送到服务器。
当我的设备时间格式为 12 小时时,以下代码运行良好。将日期格式设置为 [dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"];
它给了我正确的日期和时间。
但是一旦我将设备时间格式更改为 24 小时制。并将 datefomatter 更改为 [dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm a"];
它给出了错误的日期和时间(特别是时间。)我已经显示了代码的日志值。
我检查了很多关于 NSDateFormatter
和 NSString
到 NSDate
的转换的 Whosebug 问题。但是当我的设备时间格式为 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 小时时的日期和时间。这是正确的。
从日期时间 2017-07-04T13:46:00
当我的设备时间格式为 24 小时时的时间。而且是错误的(具体时间)。
从日期时间 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);