转换日期格式 yyyy-MM-dd'T'HH:mm:ss.SSS

2023-12-05

我有几个NSDate包含符合此格式的值的对象yyy-MM-dd'T'HH:mm:ss.SSS

当我尝试转换为不同的格式时,例如MMM dd, yyyy HH:mm格式化程序总是返回nil.

但是,如果我对字符串值进行硬编码,我将通过NSDateobject ,它会毫无问题地转换为新格式。

我填充我的NSDate模型中的对象使用setValue:forKey:方法,我觉得问题出在 JSON 库传递字符串值的地方。但调试表明NSDatehas 包含通过 JSON 返回的值。

知道是什么导致了这种奇怪的行为吗?

这是我的转换代码:

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
NSString *createdDateStr = [format stringFromDate:modelObj.createdDate];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];

NSDate *formattedDate = [format dateFromString:createdDateStr];
NSLog(@"========= REal Date %@",[format stringFromDate:formattedDate]);

编辑:重读你的问题,我认为除了其他任何事情之外,你还存在概念上的误解:

我有几个 NSDate 对象,其中包含符合以下格式的值

据我所知(诚然,我不是 Objective-C 程序员)NSDate对象不知道任何有关格式化的信息。它仅代表时间的一个瞬间。它不知道它是从文本中解析出来的还是以其他方式创建的。

这就像一个int - an int变量不是十进制或十六进制,它只是一个数字。当你格式化和解析时你就指定了。同样,你使用NSDateFormatter描述你想要的格式在解析和格式化时.


您目前只有one NSDateFormatter- 您将格式设置为"yyyy-MM-dd'T'HH:mm:ss.SSS" then 重置在你打电话之前dateFromString。您指定格式的代码片段modelObj.createdDate成 ISO-8601 格式,但随后尝试parse它使用“MMM dd, yyyy HH:mm”格式。

我建议你有两个单独的NSDateFormatter对象:

NSDateFormatter *isoFormat = [[NSDateFormatter alloc] init];
[isoFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
NSString *createdDateStr = [format stringFromDate:modelObj.createdDate];

NSDateFormatter *shortFormat = [[NSDateFormatter alloc] init];
[shortFormat setDateFormat:@"MMM dd, yyyy HH:mm"];

NSDate *parsedDate = [isoFormat dateFromString:createdDateStr];
NSLog(@"========= REal Date %@",[shortFormat stringFromDate:parsedDate]);

请注意,我已经改变了你的formattedDate变量为parsedDate,因为这就是它的真正含义 - 一个NSDate它是通过解析文本创建的。

正如评论中所指出的,除非你真的need像这样格式化和解析,你不应该。我包含了您所有的原始代码只是为了展示您如何can格式化日期,然后用相同的方法重新解析它NSDateFormatter。您将得到相同的结果:

NSDateFormatter *shortFormat = [[NSDateFormatter alloc] init];
[shortFormat setDateFormat:@"MMM dd, yyyy HH:mm"];    
NSLog(@"========= REal Date %@",[shortFormat stringFromDate:modelObj.createdDate]);

一般来说,您应该避免不必要的转换。转变from文本转换为更自然的数据类型(NSDate在这种情况下,但这同样适用于数字等),并在尽可能多的代码中使用该数据类型,仅在最后一刻转换为文本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转换日期格式 yyyy-MM-dd'T'HH:mm:ss.SSS 的相关文章

  • 究竟要消化什么并在 XMLDSIG 上签名以及如何进行? (或者,OSX 本机客户端与服务器上计算的 XMLDSIG 不匹配)

    我正在尝试使用封装签名 sha1 摘要和 rss sha1 签名按照 XMLDSIG 规范对 xml 文档进行签名 并且服务器不断返回 297 拒绝 签名与计算的 结果 不匹配 297 Rejeicao Assinatura difere
  • Mac OS X 10.7 Lion 上的 AVFoundation 核心动画问题

    在 Mac OS X 10 7 中 Apple 引入了 AVFoundation 我正在尝试生成一个包含动画形状的简单快速电影 问题是核心动画没有渲染 我最终只有一个空白的 黑色 视频 下面是我使用的代码 我尝试了很多变体 但遗憾的是它们都
  • 核心数据是否始终将返回对象视为错误?

    在下面的代码中 我显式地将 returnObjectsasFaults 设置为 false 然后在请求之后我立即检查对象是否有故障 NSAssert 失败 也许是因为该对象是 imageBlob 也许我错过了什么 我只是想确定一下 这是一个
  • iOS 6 仅支持一个视图的不同方向

    我只想将应用程序中的一个视图旋转到左横向或右横向 我的所有其他视图均处于纵向模式 并且我已将我的应用程序设置为仅支持纵向模式 随着 iOS 6 中方向的改变 我不知道如何做到这一点 我已经尝试过下面发布的内容 谁能告诉我我做错了什么 谢谢
  • 如何消除错误 服务无效 请检查您的设置并尝试

    我一直在努力工作 一切都很顺利 只是突然间 当我尝试构建我的项目时 我在 xCode 中收到以下错误 1 在构建时的警报框中 服务无效 请检查您的设置并重试 0xE8000022 只需重新启动您的 iPod 或 iPhone 即可
  • NSDate 输出不正确[重复]

    这个问题在这里已经有答案了 可能的重复 获取日期与 NSDate date 相差几个小时 https stackoverflow com questions 8466744 getting date from nsdate date off
  • ios - navigationItem.titleView 更新时闪烁

    我有一个UIView 拿着一个UIButton 设置为我的navigationItem titleView 当我更新此按钮的文本时 它会短暂闪烁 消失并随新文本重新出现 无论如何 当它改变时 是否可以保持它可见 那么 如果我更改 2015
  • 函数“FBSDK_NOT_DESIGNATED_INITIALIZER”的隐式声明在 C99 中无效预期“)”

    我正在使用适用于 iOS 4 6 0 的 Facebook SDK 今天将 cocoapods 更新到 0 38 2 后遇到了上述错误 我不确定这个错误与 cocoapods 有什么关系 Error screenshot 我遇到过同样的问题
  • 如何在 Objective-C 中将 RGB 十六进制字符串转换为 UIColor?

    我有来自 url 数据的颜色值 如下所示 ff33cc 如何将此值转换为 UIColor 我正在尝试使用以下代码行 我没有正确获取 baseColor1 的值 看来我应该把那磅炭拿掉 还有其他方法吗 NSScanner scanner2 N
  • 子类化 NSSlider:需要解决丢失鼠标向上事件的问题(Cocoa OSX)

    我正在尝试对 NSSlider 进行子类化以创建一个称为滚轮的控件 基本上我需要的是一个滑块 它总是从中间开始 当它移动到左侧或右侧时 它会经常发送通知 由可以设置的属性确定 通知其容器其当前值 然后当您放开旋钮 它会回到中间 我希望实现将
  • 外围 BLE 设备的唯一标识符

    所以我有外围设备BLE设备 我需要一些标识符以便稍后与另一部 iPhone 共享 我连接的示例iPhone A 为外围设备 iPhone A 将外围设备的标识符保存到数据库中 稍后我可以轻松获取iPhone B 并连接到通过该标识符找到的外
  • iOS 应用程序中的谷歌地图实时交通状况?

    如何使用 google 地图 sdk 或 api 在 ios 应用程序中添加当前交通状况 如下图所示 有 javascript api 但我没有找到任何适用于 iOS 应用程序的解决方案 只需在 iOS SDK 中添加一行代码即可启用或禁用
  • SplitViewController 与 TabbarController

    我在我的应用程序中使用分割视图功能 我必须将选项卡栏放在 rootViewController 中 但是 当我在选项卡栏中添加控制器并将它们添加到分割视图中时 它不会分割 它只显示detailViewController 这是应用程序中完成
  • 更新到 Xcode 7.0.1,项目现在有问题

    因此 我将 Xcode 6 1 版本上传到 iTunes Connect 并且该应用程序获得了批准 现在我正在尝试更新应用程序 我更新到 Xcode 7 0 1 Xcode 给我带来了问题 指出 对于应用程序 我使用了故事板和 Object
  • 使用 UINavigationController 从右向左推送 ViewController

    大家都知道UINavigationController从左到右推送ViewController 有没有办法从右到左推送View 就像后退按钮的动画一样 现在我有这个 self navigationController pushViewCon
  • 从 xib 中提取 UI 项目?

    经过一番浏览文档后 我决定使用以下技术 使用 viewWithTag 从 loadNibNamed owner options 返回的主根视图中提取子视图 首先 我有点困惑 因为我假设 loadNibNamed owner options
  • NSMutableData 删除字节?

    我可以使用以下命令轻松地将字节添加到 NSMutableData 实例appendData方法 但是我没有看到任何类似的删除数据的方法 我是否忽略了某些内容 或者我是否需要创建一个新对象并仅复制我需要的字节 请参阅以下方法的文档 void
  • 取消交互式 UINavigationController 弹出手势不会调用 UINavigationControllerDelegate 方法

    如果拖动 a 的边缘UIViewController开始交互式流行过渡UINavigationController the UIViewController在电流下方有viewWillAppear 调用 然后是UINavigationCon
  • 将 HTML 字符串加载到 UIWebView 中的延迟

    我在导航控制器中有两个视图控制器 第一个视图控制器有一个带有按钮的菜单 按下此按钮将移动到第二个视图控制器并将 html 字符串加载到 UIWebView 中 没有其他东西被加载到 webview 中 只是一个简单的 NSString 其中
  • UITextInput setMarkedText:selectedRange 不起作用? (不可能!)

    我想以编程方式设置标记的文本 并且由于 iOS5 UITextView 和 UITextField 符合 UITextInput 这应该是可能的 但由于某种原因我总是得到markedText为零 我在这里缺少什么 这是我尝试过但没有成功的方

随机推荐

  • 在 asp .net 中处理通过浏览器历史记录加载的页面的最佳方法是什么?

    我有一个数据库和用户密集型应用程序 用户非常热衷于用于导航的浏览器历史记录按钮 有没有一种方法可以绝对保证如果用户从浏览器历史记录中选择某些内容 页面将重新加载 我经常看到的是 页面的副本将从浏览器缓存中显示 而不是重新加载 我试过了 th
  • View 类型中的方法 setOnClickListener(View.OnClickListener) 不适用于参数 (new DialogInterface.OnClickListener(){})

    尝试将 onClickListener 添加到我的 listView 中的项目中 但收到一条错误消息 The method setOnClickListener View OnClickListener in the type View i
  • Android - 如何将列表视图项目对齐以左右对齐?

    我正在尝试向 ListView 添加图像 使其看起来更像一个按钮 我希望图像小一点 也许是当前的 60 并且图像可以很好地排列在右侧的一列中 这是我目前拥有的屏幕 这是我的列表视图 xml
  • 通过顶点标签属性创建一个boostfiltered_graph

    目前 我有一个图表 我一直在跟踪它vertices and labels通过一个external map 因此 每当我需要访问标签属性时 我都会在地图中找到标签并获取mapped vertex vertex properties struc
  • 绘制、重新绘制、paintComponent

    对不起 我搜索了很多以找到这 3 个函数 paint repaint paintComponent 如何在它们之间交互 但我不知道 你能准确地解释一下他们什么时候被调用 因为有时java调用它而不需要我问他 他们到底做了什么以及他们之间有什
  • python Alexa结果解析与lxml.etree

    我正在使用 aws 的 Alexa api 但我发现很难解析结果以获得我想要的结果 alexa api返回一个对象树
  • 缓冲大文件; BufferedInputStream 限制为 2GB;数组限制为 2^31 字节

    我正在按顺序处理一个大文件 我想将其中很大一部分保留在内存中 64 位系统上有 16GB 内存可用 一个快速而肮脏的方法是简单地将输入流包装到缓冲输入流中 不幸的是 这只给了我一个 2GB 的缓冲区 我想记住更多的内容 我有什么选择 让操作
  • Android:ListView,圆角问题

    我有带有圆角的 ListView 如下所示
  • 使用 AngularJS 和 Slim PHP 进行路由

    我一直在使用 AngularJS 并且正在尝试将我的应用程序连接到它 到目前为止 我已经使用了 Slim PHP 可以从 MySql 数据库中获取所有记录 但无法获取特定记录 我已经编写了 PHP 代码 可以导航到 requests 并获取
  • 如何将库导入到 NetBeans 中的 Java 项目?

    我需要一个可以使用 Double 或 Float 数字而不是 int 数字创建多边形的类 嗯 我找到了here and 这是Jar文件下载 我提取了 Jar 并将其添加到 NetBeans 中的库中 但现在 我不知道如何将包导入到我的项目中
  • Freemarker 编码 - 用问号代替重音字符

    我正在尝试使用 Freemarker 打印重音字符 但在重音字符的位置 我只得到问号 我已经证实 以下陈述成立 UTF 8 Environment getCurrentEnvironment getConfiguration getDefa
  • 具有多个 gitlab 用户帐户的多个密钥的 SSH 配置

    我在我的服务器上运行 Gitlab CE 并使用多个不同的用户帐户按兴趣对我的存储库进行分组 问题出在 SSH 上 我在github上找到了以下解决方案 https gist github com jexchan 2351996 在本指南中
  • 二叉搜索树递归插入不显示任何内容

    我正在对二叉搜索树进行小型 Java 工作 但是当我实现将节点递归插入到树中并显示它时 我什么也得不到 我已经研究了一段时间了 我不确定 但我认为这是一个传递引用的问题 这是我的代码 public class BST private BST
  • 如何在ios中迭代JSON对象

    我像这样创建 json 对象 id json NSJSONSerialization JSONObjectWithData data options kNilOptions error error 但文档没有告诉我如何循环json对象由键和
  • C - malloc 分配过多内存

    运行 int 一个奇怪的场景 其中 malloc 分配的内存比我要求的多 void function int array int numberOfElements int secondArray malloc sizeof int numb
  • Servlet 过滤器:非常简单的限速过滤器,允许突发

    我想添加一个非常简单的过滤器 对每个 IP 进行速率限制 但仍然允许突发 有点像iptables允许做 我不想安装整个厨房水槽 我需要的只是一个实现该功能的 Filter 类 什么是允许执行简单的 速率限制但允许短突发 的良好数据结构 算法
  • RegSvr32.exe 的 /n 和 /i 参数有什么不同?

    要注册 COM 服务器 我们在提升模式下运行类似的命令 regsvr32 exe com dll 要执行每用户注册 请在用户帐户中执行 regsvr32 exe n i user com dll regsvr32 exe 支持以下参数 u
  • 在 Python 日志记录中跨多个模块访问记录器

    我有一个关于 python 日志记录模块的小问题 我有一个简单的记录器 记录器 basicConfig 如何使用 getLogger 访问同一个记录器 或者 getLogger 是否为我提供了一个我可以访问的日志记录对象 如果是这样 我如何
  • 在Python中比较整数中的数字

    这里确实需要一些帮助 学习 Python 的超级早 目标是获取一个数字并查看数字是否按升序排列 到目前为止我所拥有的是 a int input Enter a 4 digit number b int i for i in str a if
  • 转换日期格式 yyyy-MM-dd'T'HH:mm:ss.SSS

    我有几个NSDate包含符合此格式的值的对象yyy MM dd T HH mm ss SSS 当我尝试转换为不同的格式时 例如MMM dd yyyy HH mm格式化程序总是返回nil 但是 如果我对字符串值进行硬编码 我将通过NSDate