如何在 Android 上正确处理日期

JD0*_*zzz 0 java android date kotlin java-time

我正在使用 Kotlin 开发一个 Android 项目,我们需要对设备和后端的日期进行验证。到目前为止,我们一直在使用 Date 类来表示日期,使用 SimpleDateFormat 类来解析字符串和格式化日期,以及使用 Calendar 类对日期执行操作,例如获取 x 天前的日期等。我发现一些资源指出处理日期的正确方法是使用 java.time 包(LocalDateTime、LocalTime 等类)。我有兴趣确切地知道处理日期的正确方法(从解析到格式化)以及是否需要考虑时区。我见过类似的问题,但没有一个真正概括了我想知道的内容。

Ole*_*.V. 7

正确的工作方式

\n

要正确处理日期和时间,您需要了解日期和时间是什么以及它们在用户现实生活中的行为方式。正确工作并不在于使用这个或其他库类。根据您所做的工作,您将需要了解闰年和/或儒略历、公历和预推公历和/或许多不同的阳历和阴历系统。

\n

为了正确处理时间,几乎没有办法避免考虑时区。对于时区的介绍,我推荐底部链接的视频。它\xe2\x80\x99 很有趣,并且很好地解释了基础知识。

\n

推荐使用的库类

\n

绝对推荐使用 java.time(现代 Java 日期和时间 API)来进行日期和时间工作。与 Java 1.0 和 1.1 中过时的日期和时间类相比,一些区别是:

\n
    \n
  • 旧的类假装有些事情很简单,但实际上并不简单,一些程序员没有意识到正确处理日期和时间的复杂性,并在代码中留下了未被检测到的错误。现代类在许多情况下迫使程序员决定我们想要什么,从而减少了无意错误的空间。我们必须决定是否需要日期或时间或两者兼而有之,我们想要哪个时区等等。
  • \n
  • 同样,旧类假装日期和时间是相同的,并且可以考虑有或没有时区,但这是不正确的。相信它会在极端情况下导致各种错误。使用 java.time 时,您需要在 、 和许多其他日期时间类之间进行选择LocalDate,Instant这ZonedDateTime在一开始可能会感觉很麻烦,但这将使您的代码更清晰并提高其正确的机会。
  • \n
  • 在许多情况下,旧的类接受垃圾输入/参数,再次导致明显的错误未被检测到。现代课程在验证方面做了更多的工作。
  • \n
  • 旧类通常是\xe2\x80\x99t 线程安全的。现代的是。
  • \n
\n

链接

\n\n