以下に示すように、渡す文字列に日付がある場合でも、null 日付を取得します。
汎用入力日付形式は「MM/dd/YYYY hh:mm a」です
NSString 入力 Date は次のいずれかになります: "12/1/2012" 、 "12/1/2012 01:43 am" 、 "01:43 am"
私が試している期待される出力は、入力文字列に存在する場合は日付を出力し、入力文字列に存在する場合は時間を出力する必要があるということです。
入力:-
[self testDate:@"12/1/2012"]
コード:-
-(void) testDate:(NSString*) str{
NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];//My Generic Date Format
self.dateTest=[formatter dateFromString:str];
[self printDate:self.dateTest];
}
-(void) printSeparatedDateAndTime:(NSDate*) date{
NSDateFormatter *dateF=[[NSDateFormatter alloc] init];
[dateF setDateFormat:@"MM/dd/yyyy"];
NSString *dateStr=[dateF stringFromDate:date];
NSLog(@"Date= %@",dateStr);
[dateF setDateFormat:@"hh:mm a"];
NSString *timeStr=[dateF stringFromDate:date];
NSLog(@"Time= %@",timeStr);
}
出力日:-
日付= (ヌル)
時間= (ヌル)
入力は任意の形式にすることができます。
入力
"2012 年 12 月 1 日"
出力
日付 = "2012 年 12 月 1 日" 時間 = null
input
"12/1/2012 01:43 am"
output
date="12/1/2012" time=01:43 am
input
"01:43 am"
output
date=null time="01:43 am"
ここで別の答えを得ることができますObjective-C String(yyyy-mm-dd) to NSDate。これは、日付形式の設定が間違っている場合の回答を指します。
私の場合、日付形式は正しいです。ただし、日付のみ、時間のみ、またはその両方が含まれる場合があります。文字列から日付と時刻を分離するには、ここでios4 を参照できます - 文字列から日付と時刻を 2 つの別々の文字列に分割しますが、チェック済みの回答または有効な回答がありません。