3

タイムゾーンに応じて日時文字列から時刻を取得するにはどうすればよいですか。私のタイムゾーンの時刻は+5:30GMTです。日時は次のようになります-

04/03/2013 3:30:00 AM

私は次のような出力が欲しい-

9:00:00 AM

前もって感謝します。

4

4 に答える 4

6

2つの日付フォーマッターが必要です。

文字列を日付に変換するための1つ。次に、日付を文字列に変換して、時間形式で必須にします。

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSDate *date=[dateFormatter dateFromString:@"04/03/2013 3:30:00 AM"];

NSDateFormatter *dfTime = [NSDateFormatter new];
[dfTime setDateFormat:@"hh:mm:ss a"];
NSString *time=[dfTime stringFromDate:date];

*コンパイルおよびチェックされていません

于 2013-03-06T04:44:23.307 に答える
5

GMT の日付時刻である文字列に日付と時刻がある場合は、文字列に GMT を追加する必要があります。これにより、タイムゾーンの実際の時間を取得できます-

NSString *dateStr = @"04/03/2013 3:30:00 AM GMT";

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a ZZZ"];

    NSDate *date = [dateFormatter dateFromString:dateStr];

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

    NSString *opDateStr = [dateFormatter stringFromDate:date];

    NSLog(@"op = %@",opDateStr);
于 2013-03-06T04:47:52.560 に答える
2
NSString *strdate= @"04/03/2013 3:30:00 AM";
NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date=[dateFormatter dateFromString:strdate];

NSDateFormatter *dfTime = [NSDateFormatter new];
[dfTime setDateFormat:@"hh:mm:ss a"];
NSString *time=[dfTime stringFromDate:date];
NSLog(@"%@",time);
于 2013-03-06T04:50:21.763 に答える
2
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];
NSLog(@"%@",[formatter stringFromDate:[NSDate date]]);

出力 2013 年 6 月 3 日 10:41:18 AM

[formatter setDateFormat:@"hh:mm:ss a"];
 NSLog(@"%@",[formatter stringFromDate:[NSDate date]]);

出力 10:41:18 AM

[NSDate date] の代わりに、フォーマットする必要のある日付を渡します。

現在のタイムゾーンに従って提供した時間文字列から時間が必要なため、次のようにする必要があります

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a zzz"];
NSDate *date=[dateFormatter dateFromString:@"04/03/2013 3:30:00 AM 0000"];

NSDateFormatter *dfTime = [NSDateFormatter new];
[dfTime setTimeZone:[NSTimeZone systemTimeZone]];
[dfTime setDateFormat:@"hh:mm:ss a"];
NSString *time=[dfTime stringFromDate:date];
NSLog(@"%@",time);

0000 であるオフセットが存在しない限り、実際の出力は得られません (GMT オフセット)。また、dateString とそのフォーマッタの形式が異なる場合、時間フォーマッタは完全に機能しません。したがって、MM/dd/yyyy hh:mm:ss zzz を実行する必要があります。zzz はオフセットです。これで、出力は09:00:00 AMになります

于 2013-03-06T05:14:06.897 に答える