我需要将字符串(例如“12:00 AM”)转换为具有24小时格式的日期对象。 每当我运行以下代码来获取日期对象时,我都会得到NULL。将语言环境更改为en_US_POSIX也不起作用。
NSString *TimeIn12hourFormat = @"12:00 am";
NSDateFormatter *timeFormatter = [NSDateFormatter new];
[timeFormatter setTimeStyle:NSDateFormatterShortStyle];
[timeFormatter setDateStyle:NSDateFormatterNoStyle];
[timeFormatter setLocale:[NSLocale currentLocale]];
[timeFormatter setDateFormat:@"HH:mm"];
NSDate *dateIn24HourFormat = [timeFormatter dateFromString:TimeIn12hourFormat];
NSLog(@"Time in 24 hour format : %@", dateIn24HourFormat);
如果我做错了什么,请指出,否则请指导我如何做到这一点。我已经搜索了很多关于这种字符串到目前为止的转换,但是找不到这样的场景。 任何帮助都提前感谢。
答案 0 :(得分:1)
添加一封信" a"到你的dateFormat。这意味着,你的时间字符串有" AM"最后。
[timeFormatter setDateFormat:@"hh:mm a"];
HH
适用于24小时格式,其中hh
为12小时/ pm格式。
答案 1 :(得分:1)
使用以下代码,感谢所有其他贡献者的帮助。
NSString *TimeIn12hourFormat = @"12:00 am";
NSDateFormatter *timeFormatter = [NSDateFormatter new];
[timeFormatter setDateFormat:@"hh:mm a"];
[timeFormatter setTimeStyle:NSDateFormatterShortStyle];
[timeFormatter setDateStyle:NSDateFormatterNoStyle];
[timeFormatter setLocale:[NSLocale currentLocale]];
NSDate *dateIn24HourFormat = [timeFormatter dateFromString:TimeIn12hourFormat];
[timeFormatter setDateFormat:@"HH:mm"];
TimeIn12hourFormat = [timeFormatter stringFromDate:dateIn24HourFormat];
NSLog(@"Time in 24 hour format : %@", TimeIn12hourFormat);