[英]iOS NSDate from string with time only
我的任務是將字符串隨時間解析為 NSDate。 我用以下代碼做得很好:
NSString* timeStr = @"15:00:00"
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate* result = [formatter dateFromString:timeStr];
但結果我得到2000-01-01 15:00:00 CET並且我不明白為什么日期被設置為2000-01-01 ,而不是2001-01-01 (這是參考日期)或1970-01-01 . 而 2000-01-01 似乎不是隨機值... :)
如果您希望它只是一個帶有日期部分的字符串,只需使用 dateFormatter,類似於您之前所做的。
NSString* timeStr = @"15:00:00";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate* result = [formatter dateFromString:timeStr];
[formatter setDateFormat:@"YYYY-MM-DD"];
timeStr = [formatter stringFromDate:result];
或者您需要直接在日期格式化程序中設置日期字符串,這是因為如果您在日期格式化程序中指定時間字符串,您將獲得日期和時間字符串的組合
NSString* dateStr = @"2001-01-01";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"YYYY-MM-DD"];
NSDate* result = [formatter dateFromString:dateStr];
除了時間,你沒有傳遞任何信息。 因此,您的 NSDate 中的任何其他值都未定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.