java - 哪些 Android API 用于简单的日期和时间函数

标签 java android date

我需要的日期和时间函数集非常基本。

  1. 表示日期/时间的对象(方便函数调用)。
  2. y、m、d、h、m、s 之间的转换函数。
  3. 格式/解析函数与仅限数字的本地化字符串表示形式。例如 dd/mm/yyyy、yyyy-mm-dd、mm.dd.yyyy 或本地预期的任何顺序和分隔符。
  4. 获取当前本地日期和时间的系统函数(不需要时区)。
  5. 与 DatePicker 小部件兼容。
  6. 线程安全。可用于 UI 和工作线程 (NDK) 的静态函数。

到目前为止我发现:

  • CalendarGregorianCalendar 可以进行转换,但它们使用起来很笨重,而且它们不是线程安全的。
  • SimpleDateFormat 可以进行格式化,只要我能弄清楚要输入哪个神奇的字符串即可!默认值不是数字。
  • Time 有一组更好的转换函数,但没有日期/时间对象,而且解析/格式函数只是间接记录。而且它闻起来更像 Unix 而不是 Java。

那么我是否找到一种方法来修复线程安全并尝试说服 SimpleDateFormat 给我我需要的东西?还是我放弃并跳槽到 Time?还是我错过了什么?


需要说明的是,这不是图书馆推荐或购物 list 的请求。这是关于如何使用给定的 Android API 实现一组特定功能的帮助请求。我正在寻找使用这些库来指出一条穿越泥沼的路径的专家。我希望写得很好的答案能让其他读者也为这部分 Android 苦苦挣扎。

最佳答案

我个人认为 Joda-Time能够处理日期和时间所需的几乎所有内容。因为它只是一个 .jar,所以应该可以导入。

以下是如何使用它,针对您具体提出的问题:

  1. 表示日期/时间的对象 - DateTime 表示不可变,MutableDateTime 表示您需要应用转换的对象。
  2. 这些对象有很多转换方法,见Joda-Time API for AbstractDateTime例如,Joda 的所有类都扩展了 AbstractDateTime
  3. 您可以使用 String convertedToString = new DateTime().toString("yyyy-MM-dd") 将其设为 2014-05-05。要扭转这一局面,请使用此 API:DateTimeFormatter parseDateTime(someStringThatRepresentsADate)
  4. DateTime now = new DateTime() 现在给你一个 DateTime 对象
  5. 您可以通过执行类似 DateTime fromCalendar = new DateTime(myCalendarObject) 的操作从其他几个类(例如 Calendar)获取 DateTime 对象
  6. 参见 The FAQ for Joda on multi-threading

为了将 Joda 导入到您的 Android 项目中,假设您使用的是 Android Studio 和 Gradle,请参阅以下答案:Android Studio: Add jar as library?

关于java - 哪些 Android API 用于简单的日期和时间函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23455361/

相关文章:

java - R.raw.anything 无法解决

java.text.ParseException : Unparseable date: "01-02-2014" 异常

Javascript Date.getFullYear() 返回 1943 而不是 2013,为什么?

java - 在名称由字符串变量定义的类中调用已知函数(带参数)

java - Android编程——带按钮的ListView

android - android如何显示包含200个元素的列表?

javascript - AngularJS 日期过滤器不产生结果

java - Java 中的正则表达式分组

java - proguard 可以安全地降级 Java 类吗?

java - XML Android 与 Html 5 性能和关注点?