iphone - NSDate/NSDateFormatter - 只存储时间,不存储日期?

标签 iphone objective-c ios nsdate nsdateformatter

我一直在四处寻找,但我没有看到任何解决这个问题的东西,所以我希望有人能帮我解决这个问题。我想做的是使用 NSDate 变量(在核心数据中)来存储时间,而不是日期和时间,而只是 HH:MM:SS 格式的时间;

在查看了 NSDateFormatter 类引用和提供的示例代码后,我能够对其进行调整,并认为我的代码应如下所示:

NSDateFormatter *timeOfArrival = [[NSDateFormatter alloc] init];
[timeOfArrival setTimeStyle:NSDateFormatterLongStyle];
[timeOfArrival setDateStyle:NSDateFormatterNoStyle];
[timeOfArrival setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];

NSString *etaStr = [attributeDict objectForKey:@"cumulativeTime"];
NSLog(@"%@", etaStr);
checkpoint.eta = [timeOfArrival dateFromString:etaStr];

直到我尝试从我的字符串创建我的 NSDate 对象的最后一行之前的所有内容都有效,但在那之后,checkpoint.eta 仍然为零。

etaStr 正确输出了我的预期值,例如 00:14:00,但我不确定我做错了什么。

最佳答案

设置语言环境和日期格式后,您应该能够在日期和字符串之间来回转换。因为您只需要时间,所以可以忽略日期部分。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[[[NSLocale alloc] 
                 initWithLocaleIdentifier:@"en_US"] autorelease]];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *etaStr = @"00:14:00";
NSDate *generatedDate = [formatter dateFromString:etaStr];
NSLog(@"%@", [formatter stringFromDate:generatedDate]);
[formatter release];

输出

00:14:00

快速版本

是时候为 swift 更新这个答案了:

var formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US")
formatter.dateFormat = "HH:mm:ss"
let etaString = "00:14:00"
let generatedDate = formatter.dateFromString(etaString)!
let generatedString = formatter.stringFromDate(generatedDate)
println(generatedString)

swift 3版本

var formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US")
formatter.dateFormat = "HH:mm:ss"
let etaString = "00:14:00"
let generatedDate = formatter.date(from: etaString)!
let generatedString = formatter.string(from: generatedDate)
print(generatedString)

关于iphone - NSDate/NSDateFormatter - 只存储时间,不存储日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7153962/

相关文章:

iphone - objective-c UIAlert 按钮不起作用

iphone - 核心蓝牙和后台 : Detection of a device and triggering an action, 即使在后台模式下几天后?

ios - 在 map 上显示方向时添加交通类型

c++ - 带有 C++ 的 Objective-c 中的类与框架

ios - 如何在弹出的 react-native 应用程序中配置 Info.plist 文件使用 expo sdk

iphone - 如何检查 iPhone 中的日期有效性?

ios - 为什么建议对委托(delegate)使用 _weak 引用

ios - 为什么我不能在 Alamofire 4.0 中使用 SessionManager 发出请求?

ios - iOS 自定义披露指标有哪些维度?

iphone - UITableView "Scroll down to update"