11

我在我的应用程序中显示正确的日期时遇到问题。当用户在他的日期时间首选项中设置 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;
4

5 回答 5

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"];
于 2013-03-19T06:19:09.450 回答
31

很简单试试这个:

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"];
于 2013-12-10T09:34:25.870 回答
14

用这个:

目标-C:

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

斯威夫特 4.1

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

之后您的日期将不会修改。

于 2013-03-19T06:17:27.217 回答
5

如下设置 dateFormatter 的语言环境。它应该可以解决您的问题。

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];
于 2013-03-19T06:14:23.543 回答
1
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm"]; 
NSString *dateString = [dateFormat stringFromDate:[NSDate date]];
于 2016-03-09T17:37:44.580 回答