gpt4 book ai didi

来自字符串的 iOS NSDate 只有时间

转载 作者:行者123 更新时间:2023-12-01 17:12:08 28 4
gpt4 key购买 nike

我的任务是用时间解析字符串到 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];

关于来自字符串的 iOS NSDate 只有时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051915/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com