Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android日期时间操纵库_Java_Android_Date_Calendar - Fatal编程技术网

Java Android日期时间操纵库

Java Android日期时间操纵库,java,android,date,calendar,Java,Android,Date,Calendar,来自C#,我习惯了光滑的界面和提供。有了这些,我可以访问日期时间部分(年、月、秒等)、基础刻度、减去日期、添加时间增量等等 作为一名Java/Android新手,我知道等价的Java类曾经拥有这些访问器,但由于向后兼容性的原因,它们被删除了。建议的替代方案是使用对象,但我发现与.Net相比,它的接口很麻烦 是否有一个等效的Java库来简化Android中Date对象的操作?更新: 正如@basil在下面的评论中指出的那样 Joda Time项目现在处于维护模式。它的创建者斯蒂芬·科尔伯恩(Ste

来自C#,我习惯了光滑的界面和提供。有了这些,我可以访问日期时间部分(年、月、秒等)、基础刻度、减去日期、添加时间增量等等

作为一名Java/Android新手,我知道等价的Java类曾经拥有这些访问器,但由于向后兼容性的原因,它们被删除了。建议的替代方案是使用对象,但我发现与.Net相比,它的接口很麻烦

是否有一个等效的Java库来简化Android中
Date
对象的操作?

更新:

正如@basil在下面的评论中指出的那样

Joda Time项目现在处于维护模式。它的创建者斯蒂芬·科尔伯恩(Stephen Colebourne)继续领导JSR 310定义内置于java 8+中的java.time类。请参阅Oracle提供的教程巴兹尔布尔克1分钟前


您可以使用它是一个外部库,日期和日历是提供的基本API,java 8为日期时间添加了更好的API,但对于android,现在您可以使用joda tiem,我只是想提供一个更更新的答案


还有“一个以安卓为核心构建的Joda Time版本”。他有自己的图书馆。您可能想查看它。

改进Jigar Joshi的答案,您可以使用joda time的android特定端口,该端口针对android设备进行了优化。

java.time 其他答案已经过时了

该框架是一项非常成功和出色的工作。然而,在Java8和更高版本中构建的框架在其创建者的带领下进行了彻底的重写和重新设计

在项目中,java.time的大部分功能已经被移植到Java6和Java7中。这项工作在项目中进一步适应了Android

乔达时间继续保持不变。但是团队建议我们在方便的时候尽快迁移到java.time。未来的创新工作将进入java.time及其在项目中的扩展

我建议您在新代码中尝试java.time。不需要删除Joda Time。这两个框架可以在您的项目中共存。只需小心使用
import
语句,因为两个框架之间有几个类共享一个名称。稍后,一旦您熟悉java.time,您就可以考虑重新访问旧代码以逐步淘汰Joda time的使用

ZoneDateTime
见全班同学。它有您要求的方法,
getYear
getHour
,等等

该类表示UTC中的一个时间,解析为纳秒(比其他库/系统中使用的毫秒和微秒更精细)。这是java.time的基本构建类

我可以访问日期时间部分(年、月、秒等)、基本刻度、减去日期、添加时间增量等

时间跨度 有关未附加到时间轴的时间跨度,请参见
期间
持续时间
类。各种日期时间类都有用于添加或减去此类对象的数学方法



关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

该项目现已启动,建议迁移到类

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类。Hibernate5和JPA2.2支持java.time

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • 带来了一些小功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • Android(26+)的更高版本捆绑了java.time类的实现

    • 对于早期的Android(我建议使用此库而不是Joda:

      原因如下:

      为什么不使用Joda Time?Joda Time有一个非常大的API,它带来了 它具有非常大的二进制大小和大量的方法计数 JSR-310和Joda Time的研究人员也表示,虽然Joda Time并非如此 坏了,它确实有设计缺陷

      如果您已经在使用Joda Time,那么没有什么理由切换 除非其规模或方法计数与您相关。对于新项目, 但是,这个库提供了Java8中的标准API 更小的包不仅在二进制大小和方法计数上,而且在 API大小


      我认为你应该坚持使用日历,即使它写或读起来不是很漂亮。一些android对象,比如datePicker,TimePicker,…正在使用日历,所以使用这个可以简化android组件在应用程序中的使用future@k3v1n4ud3提出一个好的观点;在考虑使用第三方库时,应该考虑应用程序。hat说,当您需要的比JDK提供的更多时,Joda实际上是Java内置日期/时间API的替代品;通过Joda对象构造函数和/或到历元时间整数的中间转换,到日历的转换通常是直接的(顺便说一句,几天前刚刚发布)有一个(),不过Android可能需要一段时间才能看到Java 8的支持。@k3v1n4ud3您可以轻松地在Java.util.Date和Joda Time之间进行转换。
      Java.util.Date Date=myDateTime.toDate();
      DateTime myDateTime=new DateTime(日期,时区)
      Joda Time提供了三个类来表示时间跨度:间隔、持续时间和周期。更新:该项目现在开始。其创建者继续领导定义Java 8+中内置的类。请参阅。
      Java.Time
      在Android API level 26之前不可用,而Android API level 26
      ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
      ZonedDateTime zdt = ZonedDateTime.now( z ) ;
      int year = zdt.getYear() ;
      int hour = zdt.getHour() ;
      int second = zdt.getSecond() ;
      long millisecondsSinceEpochOfFirstMomentOf1970InUtc = zdt.toInstant().toEpochMilli() ;
      ZonedDateTime earlier = zdt.minusDays( 3 ) ;  // Three days prior.
      Duration duration = Duration.of( earlier , zdt ) ;  // Scale of 24-hour days (not attached to the calendar), hours, minutes, seconds, and fraction of second.
      Period period = Period.of( earlier.toLocalDate() , zdt.toLocalDate() ) ;  // Scale of year-months-days.