我有这样的日期字符串:“ 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];
还有其他转换方法吗?还是我做错了什么?
答案 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"]