如何以am/pm格式获取时间iphone NSDateFormatter?

Gop*_*ath 53 iphone time nsdateformatter ios

我正在使用NSDateFormatter在iPhone应用程序中工作.我从网络服务中得到的时间就像"00:00:00", "16:00:00","15:30:00" and so on."00:00:00" to "12 AM"如果时间是"16:00:00" to "4 PM",如果时间是"15:30:00"到"3.30 PM" ,我需要将这些时间转换为时间.我已经使用了下面的代码,但是当我通过时"16:00:00" the date returns null.

 NSString *dats1 = @"16:00:00";
 NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];  
 [dateFormatter3 setDateFormat:@"hh:mm:ss"]; 
 NSDate *date1 = [dateFormatter3 dateFromString:dats1];
 NSLog(@"date1 : %@", date1); **// Here returning (null)**

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 [formatter setDateFormat:@"hh:mm a"];
 NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)**
 [formatter release];
Run Code Online (Sandbox Code Playgroud)

当通过"00:00:00"时,它正确地返回"12 AM".有谁可以帮我解决这个问题?提前致谢.

Yuv*_*j.M 113

如果您的时间格式是24hrs请使用"HH:mm:ss"格式.请测试代码并告诉我它是否适合您.我已经测试过,它正在返回"4 PM"

NSString *dats1 = @"16:00:00";
 NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];  
 [dateFormatter3 setDateFormat:@"HH:mm:ss"]; 
 NSDate *date1 = [dateFormatter3 dateFromString:dats1];
 NSLog(@"date1 : %@", date1); **// Here returning (null)**

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 [formatter setDateFormat:@"hh:mm a"];
 NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)**
 [formatter release];
Run Code Online (Sandbox Code Playgroud)

谢谢.


eli*_*ocs 22

您可以使用.ShortStyle适应当前区域设置的:

let timeFormatter = NSDateFormatter()
timeFormatter.dateStyle = .NoStyle
timeFormatter.timeStyle = .ShortStyle
timeFormatter.stringFromDate(NSDate())
Run Code Online (Sandbox Code Playgroud)

哪个返回17:125:12 PM取决于当前设备区域设置.


Cha*_*ran 15

你为什么再次分配NSDateFormatter

你只需要将其格式化为NSDate然后再次NSString,

    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDateFormat:@"HH:mm:ss"];

    NSDate *date = [dateFormatter dateFromString:dats1];

    [dateFormatter setDateFormat:@"hh:mm a"];

    NSString *formattedDate = [dateFormatter stringFromDate:date];

    NSLog(@"%@",formattedDate);
Run Code Online (Sandbox Code Playgroud)

  • 有必要因为他有HH格式的输入小时格式,即24小时格式 (6认同)

Ste*_*mer 14

尝试HH:mm:ss(注意小时格式的大写字母)


Raf*_*sun 8

希望有人愿意在Swift中获得它

对于斯威夫特

let dateFormatter = NSDateFormatter()
//if some one want 12AM,5PM then use "hh mm a"
//if some one want 00AM,17PM then use "HH mm a"
dateFormatter.dateFormat = "hh mm a"
let stringDate = dateFormatter.stringFromDate(NSDate())
println(stringDate)
Run Code Online (Sandbox Code Playgroud)


小智 8

以下代码始终保持12小时格式:

NSLocale *12hourFomrat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
df.locale = 12hourFomrat;
Run Code Online (Sandbox Code Playgroud)

这始终保持24小时格式

NSLocale *24hourFormat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
df.locale = 24hourFormat
Run Code Online (Sandbox Code Playgroud)