簡體   English   中英

iOS NSDate 來自僅帶時間的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM