iOS NSDate 来自仅带时间的字符串 [英] iOS NSDate from string with time only

查看:55
本文介绍了iOS NSDate 来自仅带时间的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的任务是将字符串解析为 NSDate.我用以下代码做得很好:

My task is to parse string with time to NSDate. And I do it very well with following code:

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 似乎不是随机值... :)

But as a result I get 2000-01-01 15:00:00 CET and I dont understand why date was set to 2000-01-01, not 2001-01-01 (which is reference date) or 1970-01-01. And 2000-01-01 seems to be not random value... :)

推荐答案

如果您希望它只是一个带有日期部分的字符串,只需使用 dateFormatter,类似于您之前所做的.

If you want it's just a string with the date part, simply use a dateFormatter, similar what you've done before.

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];

或者你需要直接在date formatter中设置日期字符串,这是因为如果你在date formatter中指定时间字符串,你会得到日期和时间字符串的组合

Or you need to set date string in date formatter directly, this is because if you specify time string in date formatter you will get combination of date with time string

 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 来自仅带时间的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆