我有一个NSDate
对象,其格式为12小时,如2014-09-16 04:40:05 pm +0000
。
我想将其转换为24小时格式,并希望获得像2014-09-16 16:40:05 +0000
这样的NSDate对象。
有人可以指导我这样做。
所以我想要一些方法,如:
-(NSDate *) get24HourFormat:(NSDate *) date{
return date object;
}
答案 0 :(得分:5)
简单使用:
NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
dateformate.dateFormat = @"HH:mm a"; // Date formater
NSString *timeString = [dateformate stringFromDate:[NSDate date]]; // Convert date to string
NSLog(@"timeString :%@",timeString);
逻辑:只需将日期格式 hh:mm 转换为 HH:mm
答案 1 :(得分:2)
这里似乎存在一个深刻的误解NSDate
是什么和做什么。
NSDate
对象是UTC
中的某个时间点。它没有时区。它没有格式。它什么都没有。你不能改变它的格式,它甚至没有任何意义。
您可以使用NSDateFormatter
将NSDate
转换为字符串。默认情况下,NSDateFormatter
使用您的本地时区,这意味着大多数人的结果与NSLog
为NSDate
显示的结果不同。在NSDateFormatter
中,您可以使用所需的任何设置。
通常,您会尊重用户如何设置其日期格式,而不是为用户可见的任何内容更改日期格式。作为用户,如果我将设备设置为以12小时格式显示日期,如果您的应用程序的工作方式不同,我会非常恼火。
答案 2 :(得分:-1)
试试这个..
-(NSString *)changeformate_string24hr:(NSString *)date
{
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSDate* wakeTime = [df dateFromString:date];
[df setDateFormat:@"MM/dd/yyyy HH:mm:ss"];
return [df stringFromDate:wakeTime];
}
-(NSString *)changeformate_string12hr:(NSString *)date
{
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MM/dd/yyyy HH:mm:ss"];
NSDate* wakeTime = [df dateFromString:date];
[df setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
return [df stringFromDate:wakeTime];
}