- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一种方法可以将特定格式的字符串转换为 NSDate
,但它偶尔会返回 nil。
- (NSDate *)dateFromString:(NSString *)dateAndTime
{
NSDate *date;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];
date = [formatter dateFromString:dateAndTime];
return date;
}
据我所知,这在大多数情况下都有效,但也有一定比例的时间会失败。
我已经跟踪这个错误一段时间了,所以有一些代码会在发生这种情况时使应用程序崩溃。崩溃报告告诉我使该方法返回 nil 的值。
例如,我收到一份崩溃报告,告诉我“4/14/2015 7:35 PM”返回了 nil。
当我为每个日期硬编码相同的值时,它在我的计算机上以 Debug模式运行应用程序时有效。
这里可能发生了什么?我没有涵盖 NSDate
的某些案例吗?为什么它不会在所有设备上发生?
最佳答案
首先,4/14/2015 7:35 PM
的日期字符串可能是 M/d/yyyy h:m a
或 M/dd/yyyy h:mm a
。 http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns
其次,建议将NSLocale设置为NSDateFormatter。
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
当我与一个中国人一起工作时,我遇到了同样的问题,即 NSDate 被设置为 nil
。它只发生在特定的设备上,问题出在区域设置上。
要重现该问题,请按照以下步骤操作:
简体中文
关于ios - 为什么 NSFormatter dateFromString 偶尔会返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29639126/
我需要为某些字段创建一个自定义 NSFormatter,但如果值无效,我不想使用警报表来显示错误消息...我更喜欢仅使用 NSBeep()。这是可能的还是我必须用 NSFormatter 提出的标准表
这个问题在这里已经有了答案: dateFromString returns nil for some values (1 个回答) 关闭 6 年前。 我的格式化程序返回 nil 和一些日期字符串,这
如果您使用 Cocoa 一段时间,您可能熟悉 NSDateFormatter 和 NSNumberFormatter。它们可以方便地从日期和数字创建格式化显示字符串,或者将日期或数字字符串转换为数值,
我正在尝试使用一个类来覆盖 OS X 应用程序中的 NSFormatter。我尝试了书中的一个例子,但它来自旧版本的 XCode。我的问题是我不知道如何设置 NSTextfield 的格式化程序。我不
我有一个 NSPopUpButton,其内容值绑定(bind)到 NSNumbers 的 NSArray。 NSPopUpButton 在其弹出菜单中正确显示数字数组。但是,当我更改所选值时,我收到一
我已经使用绑定(bind)到数组 Controller 的表设置了简单的 Xcode 项目。如果数组 Controller 充满了具有字符串属性的实体,它就可以正常工作。但是,我想将属性更改为 BOO
在 Cocoa 中,我有一个 NSOutlineView,其中单元格是 NSTextFieldCell。该单元格显示的值是根据特定规则格式化的字符串(例如 float 或中间有空格的 float 对)
我正在获取字符串中对象的价格,我想将其格式化为货币。我正在使用以下代码: var priceString : NSString = urlDict.objectForKey("price") as N
我在日期格式方面遇到了真正的困难。我想完全忽略时区,因为所有时间都被认为是本地时间。我在 Playground 上试过了,效果很好。 var dateFormatter: NSDateFormatte
我想使用 NSFormatter 子类来格式化我用来显示选项列表的 NSPopUpButton 的内容。 基本上,我有一个 MyObjects 的 NSArray,它通过内容值绑定(bind)绑定(b
我想对输入字符串中的第一个字符进行着色。使用 controlDidChange 委托(delegate)方法可以轻松完成此操作。但是添加格式化程序后使用: [field setFormatter:[[
我在这里阅读了类似的问题,并在我的应用程序中编写了此方法 let formatter = NumberFormatter() func convertEngNumToPersi
我有一种方法可以将特定格式的字符串转换为 NSDate,但它偶尔会返回 nil。 - (NSDate *)dateFromString:(NSString *)dateAndTime { NS
我在 Swift 中有一个 NSFormatter,它附加到 NSTextField。它可以防止输入非法字符,但是当我尝试访问下一个字段的值时,它给出了一个 nil 值。 下面是类: class PS
我正在尝试为 SMPTE 时间代码格式化两个 NSTextField,其格式为:HH:MM:SS:FF。然而,当用户将SMPTE编码切换为丢帧时,SS和FF之间的分隔符需要切换为;(HH:MM:SS;
在Qt和C#中,我能够轻松地为电话号码和序列号等内容定义输入掩码。到目前为止,我读过的所有内容都让我相信 NSFormatter 就是答案,但我很难找到一个完整的示例,但它并不糟糕。我真的很想为序列号
我有一个必须是唯一的文本字段,因此我添加了自定义 NSFormatter (见下文) 格式化程序可以工作,正如您在屏幕截图中看到的那样,但是我正在使用的连续绑定(bind)已损坏,因此例如绑定(bin
我正在尝试将 NSFormatter 对象添加到 NSTextField 中,以便我可以验证文本字段是否仅包含字母数字字符串。 所以我这样做: 我创建了一个新的 Swift macOS 应用。 我将
我有一个项目当前使用带有绑定(bind)的基于单元格的 NSTableViews。我正在更新项目以改用 View 。对于单元格,我可以在代码中实例化 NSFormatter,将其添加到 NSTable
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我是一名优秀的程序员,十分优秀!