将12小时格式的NSDate转换为24小时格式

时间:2014-09-16 12:12:55

标签: ios iphone nsdate nsdateformatter

我有一个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;
} 

3 个答案:

答案 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中的某个时间点。它没有时区。它没有格式。它什么都没有。你不能改变它的格式,它甚至没有任何意义。

您可以使用NSDateFormatterNSDate转换为字符串。默认情况下,NSDateFormatter使用您的本地时区,这意味着大多数人的结果与NSLogNSDate显示的结果不同。在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];

}