如何用“ dd MMM yyyy”的日期表示它,意思是“ 2019年6月11日”?

时间:2019-06-13 06:56:02

标签: objective-c nsdateformatter

我有这样的日期字符串:“ 2019年6月11日16:35:21”。当我尝试将字符串转换为NSDate时,它返回nil。

NSString str =@"11 June, 2019 16:35:21";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat: @"dd MMM yyyy"];
NSDate *date = [formatter dateFromString:str];
NSString *string = [[formatter stringFromDate:date] uppercaseString];

还有其他转换方法吗?还是我做错了什么?

3 个答案:

答案 0 :(得分:2)

使用日期格式,例如

 NSString str =@"11 June, 2019 16:35:21";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] 
                 initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
 // input dateformat      @"11 June, 2019 16:35:21";
[formatter setDateFormat: @"dd MMMM, yyyy HH:mm:ss"];
NSDate *date = [formatter dateFromString:str];
// output dateformat for e.g @"11 Jun 2019 
   [formatter setDateFormat: @"dd MMM yyyy"];
NSString *string = [[formatter stringFromDate:date] uppercaseString];

答案 1 :(得分:0)

Karthik是正确的,首先,您必须将日期字符串以@“ dd MMMM,yyyy HH:mm:ss”格式转换为NSDate,然后将其转换为所需的格式@“ dd MMM yyyy”。 希望下面的代码能起作用。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] 
             initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
[formatter setDateFormat: @"dd MMMM, yyyy HH:mm:ss"];

NSString *str = @"11 June, 2019 16:35:21";
NSDate *date = [formatter dateFromString:str];
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat: @"dd MMM yyyy"];
NSString *string = [[formatter stringFromDate:date] uppercaseString];

答案 2 :(得分:0)

NSDateFormatter使用Unicode技术标准。

此站点有出色的文档: Date_Format_Patterns

例如“ 2019年6月11日16:35:21”可以解析为:

[dateFormatter setDateFormat:@"dd MMMM, yyyy HH:mm:ss"]