【问题标题】:What is the equivalent of Javas Joda Time LocalDate class in cocoa touch?可可触摸中Javas Joda Time LocalDate 类的等价物是什么?
【发布时间】:2015-11-04 10:11:06
【问题描述】:

Joda time 为 java 世界提供了 LocalDate 类。它为您提供仅日期,不带时间信息,无论用户手机或计算机设置的时区如何,都可以转换为同一日期。它允许计算。

显然,它由设置为 13.00 UTC 的常规 DateTime 对象支持。

在可可或可可触感世界中是否存在等价物?

或者我是否仅限于使用 NSDate 并将其设置为 13:00 和 UTC 的语言环境来实现相同的目标?这应该是一样的,但看起来更像是一个黑客而不是一个解决方案。 我当然可以为它引入一个NSDate 的子类。

【问题讨论】:

  • 究竟想要完成什么?在 NSDate、NSCalendar 和 NSDateComponents 之间,你可以做任何你能想到的时间或日期计算。 Java 可能有一个仿冒的第三方类来修复他们损坏的东西,但 Foundation 最先做到了,而且做得更好! /fighting_words
  • 我想在任何时区设置一个日期。只是日期。我希望它在一些允许计算和 比较的类中。我希望在世界各地使用当地时区将同一日期显示为同一日期。与 JodaTime 的 LocalDate 相同。
  • 如果没有时间部分,则时区无关紧要。您可以使用将时间设置为 12:00 AM (00:00) 的 NSDate,并进行任何您想要的计算。在向用户打印或显示日期时,您可以忽略时间部分。
  • 另外,NSDates 没有时区的概念。这种解释取决于使用它的程序员。
  • @Avi,我希望你是对的,但你不是。时区并非无关紧要。将其设置为北京时区的凌晨 12 点并将其存储在某个地方。然后将您的手机设置为旧金山并恢复并显示它。您将看到前一天的日期。反过来做,您将显示 +1 天。设置为 11 AM UTC 可以在任何时区工作,但这不是我要求的。

标签: objective-c swift cocoa


【解决方案1】:

Foundation 在处理日期时有这些类:

NSCalendarNSDateFormatter 的时区和语言环境可以设置为任何值。

请参阅Date and Time Programming Guide 了解更多信息。

【讨论】:

  • 谢谢。当 NSDateComponents 的日期 - 比如说 - 2016 年 1 月 16 日存储在 CET 中时,当它的值保存在某处并在莫斯科或纽约恢复,然后使用仅显示日期的 NSDateFormater 显示时,NSDateComponents 会产生什么结果?
  • 取决于 NSDateFormatter 的时区。
  • 嗯,这正是我想要克服的缺陷。我需要它是全球相同的日期,但我需要能够应用计算和比较,例如某个有效日期是否已过期等。
  • 您的到期日期是绝对日期还是相对于用户的时区?
  • @Avi,这是绝对的。就像LocalDate 一样。这就是为什么我要求使用 LocalDate 的等价物。
猜你喜欢
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2016-07-26
相关资源
最近更新 更多