web-dev-qa-db-ja.com

AM / PM形式のiPhone NSDateFormatterで時間を取得する方法は?

NSDateFormatterを使用してiPhoneアプリで作業しています。 "00:00:00", "16:00:00","15:30:00" and so onなどのWebサービスから時間を取得しています。時刻が"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];

「00:00:00」を渡すと、「12 AM」が正しく返されます。誰でもこの問題を解決するのを手伝ってくれますか?前もって感謝します。

53
Gopinath

時間の形式が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];

ありがとう。

113
Yuvaraj.M

現在のロケールに適応する.ShortStyleを使用できます。

let timeFormatter = NSDateFormatter()
timeFormatter.dateStyle = .NoStyle
timeFormatter.timeStyle = .ShortStyle
timeFormatter.stringFromDate(NSDate())

現在のデバイスロケールに応じて、17:12または5:12 PMを返します。

22
eliocs

なぜ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);
15
Charan

HH:mm:ss(時間形式で大文字に注意してください)

14
Steven Kramer

以下のコードは常に12時間形式で保持されます。

NSLocale *12hourFomrat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
df.locale = 12hourFomrat;

これは常に24時間形式で保持されます

NSLocale *24hourFormat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
df.locale = 24hourFormat
8
Mutablegopi

Swiftでそれを手に入れたい人が助けになることを願っています

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)
8

日付形式は次のとおりです。

  [dateFormatter3 setDateFormat:@"HH:mm:ss"]; 

Date Format Pattern Dok を確認してください

3
CarlJ