哪些Android API用于简单的日期和时间功能

时间:2014-05-04 10:53:58

标签: 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)线程可用的静态函数。
  7. 到目前为止,我发现了:

    • CalendarGregorianCalendar可以进行转换,但它们使用起来很笨拙,并且它们不是线程安全的。
    • SimpleDateFormat可以进行格式化,如果我只能找出要喂它的魔术字符串!默认值不是数字。
    • Time具有更好的转换函数集,但没有日期/时间对象,并且仅间接记录解析/格式函数。它的味道更像Unix而不是Java。

    那么我是否找到了解决线程安全问题的方法,并试图说服SimpleDateFormat给我我需要的东西?或者我是否放弃并跳转到Time?或者我错过了什么?


    为了清楚起见,这是对图书馆推荐或购物清单的请求。这是关于如何使用给定的Android API实现特定功能集的帮助请求。我正在寻找一位使用这些库来指出通过泥潭的路径的专家。我希望一个写得很好的答案会让其他读者感到受益,因为他们也在努力应对这部分Android。

1 个答案:

答案 0 :(得分:1)

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

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

  1. 用于表示日期/时间的对象 - {immits for DateTimeMutableDateTime用于需要应用转换的对象。
  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
  6. 之类的内容从其他几个类中获取Calendar个对象,例如DateTime fromCalendar = new DateTime(myCalendarObject)
  7. 请参阅The FAQ for Joda on multi-threading
  8. 为了将Joda导入您的Android项目,假设您使用的是Android Studio和Gradle,请参阅以下答案:Android Studio: Add jar as library?