如何在Objective-c中将日期格式设置为24小时?

时间:2013-03-19 06:10:48

标签: ios nsdateformatter

我无法在我的应用中显示正确的日期。当用户在其日期时间首选项中设置24小时格式“开启”时,我的应用程序显示正确的时间,但是当24小时格式设置为“关闭”时,它什么都不显示。

以下是我正在使用的代码:

NSDateFormatter *formatter       =   [[NSDateFormatter alloc] init];

[formatter setDateStyle:style];

[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
 NSDate *temp            =   [formatter dateFromString:strDate];

[formatter setDateFormat:format];
[formatter setLocale:[NSLocale currentLocale]];

NSString *returnStr     =   [formatter stringFromDate: temp];
[formatter release];
NSLog(@"Return: %@", returnStr);

return returnStr;

5 个答案:

答案 0 :(得分:46)

试试这个

[dateFormat setDateFormat:@"hh:mm:ss"];

HH :24小时格式

hh :12小时格式

所以在你的情况下

//after conversion to date

if ON
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];

if OFF
[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];

答案 1 :(得分:30)

非常简单,试试这个:

12小时:(hh:mm:ss)

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss"];

24小时:(HH:mm:ss)

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss"];

答案 2 :(得分:14)

使用它:

目标C:

dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

Swift 4.1

dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

之后,您的日期不会被修改。

答案 3 :(得分:5)

设置dateFormatter的语言环境,如下所示。它应该能解决你的问题。

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];

答案 4 :(得分:1)

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm"]; 
NSString *dateString = [dateFormat stringFromDate:[NSDate date]];