首页 / 知识
关于datetime:在Java中操作日期和时间戳的最佳方法是什么?
2023-04-16 20:31:00
What's the best way to manipulate Dates and Timestamps in Java?每次我需要使用Java中的日期和/或时标时,我总是觉得自己做错了事,花了无尽的时间试图找到使用API??的更好方法,而不必编写自己的Date和时间实用程序类。这是我刚遇到的一些烦人的事情:
因此,我的问题是...您使用什么第三方API来简化Java对Date and Time操作的使用(如果有)?对使用Joda有任何想法吗?任何人都仔细看过JSR-310日期和时间API? 这篇文章对比较Java Date / Time API与JODA进行了很好的讨论。 我个人只要需要在Java中操作日期/时间,就可以使用Gregorian Calendar和SimpleDateFormat。我在使用Java API方面从未遇到任何问题,并且发现它非常易于使用,因此没有真正研究任何替代方法。 java.time Java 8和更高版本现在包括java.time框架。受JSR 310定义的Joda-Time启发,并由ThreeTen-Extra项目扩展。请参阅教程。 此框架取代了旧的java.util.Date/.Calendar类。转换方法使您可以来回转换,以使用尚未针对java.time类型更新的旧代码。 核心类是:
此框架解决了您列出的几个问题。 从零开始的月份 java.time中的月数是1-12。 更好的是,
此外,该枚举还包含一些便捷的实用方法,例如获取一个月的本地化名称。 如果您还不熟悉Java枚举,请阅读该教程并继续学习。它们出奇的方便和强大。 没有时间的date
请注意,确定日期需要一个时区。巴黎比蒙塔尔(Monter)的新天还早,那里仍然是"昨天"。
类似地,有一个 关于java.time java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧版旧式日期时间类,例如 Apache Commons Lang项目具有一个 我经常使用 http://commons.apache.org/lang/ 我已经专门使用Joda三年了,肯定会推荐它-它的整个区域都覆盖有一个"按其说的做"的界面。 Joda在您启动时可能看起来很复杂,例如它具有周期,持续时间和间隔的概念,看起来很相似,但是您可以简单地通过将 使用Java总是能让我受益的是日期时间库。我从来没有使用过Joda,只是简要地看过它,看起来像是一个不错的实现,如果我正确地理解JSR-130,它会从Joda那里获取知识并将其最终包含在JavaSE中。 对于过去的项目,我经常包装Java日期时间对象,这本身就是一项任务。然后使用包装器进行日期处理。 与javascript中的相同。当有人认为吸烟是个好主意时,让2008表示2008年,即31表示该月的第31天,这是一个好主意,而且-这是最好的部分-11表示第12个月。 另一方面,他们三分之二做到了。 我正在使用GregorianCalendar-始终无处不在。简单的java.util.Date太复杂了。 所以,我的建议是-使用GC,它很简单 编写您自己的日期API非常简单,它位于原始Java类Date和Calendar之上。基本上,日期和日历都遭受以下事实的困扰:它们试图将两个概念塞入一个类: 理解了这一点,它将彻底改变您在代码中处理类似日期的概念的方式。事情将变得更简单,更清晰,更好。在任何意义上! 对我而言,Joda过于复杂,至少出于绝大多数目的,我尤其不喜欢它们违反标准Java格式的事实,其中一个例子就是它们如何解析和格式化日期。 JODA的负责人Stephen Colebourne是JSR-310的规范负责人,这也遇到了相同的问题,恕我直言(在过去的几年中,我一直关注并为讨论做出了贡献)。 自己动手做;这很容易。只需填写以下类:MyDate(包装年月日),Month(一个枚举),TimeOfDay(小时-分钟-秒-毫秒),DayOfWeek(枚举),Instant(包装一个长整数)。在"即时"和"日期"之间进行转换时,请始终考虑时区。 如果这看起来令人生畏,则可以在后台使用Calendar和SimpleDateFormat。您将在一天内完成此操作,永远不会后悔。 许多程序员从使用Date开始,它具有许多不赞成使用的重载构造函数(使其很难使用),但是一旦弄清楚了GregorianCalendar,它就会变得更易于管理。这里的示例非常有帮助: http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html 日期API很难设计,尤其是在必须处理本地化的情况下。尝试自己动手,看看,值得至少做一次。 Joda能够做到如此出色的事实是其开发人员的真实荣誉。要回答您的问题,尽管我自己从未玩过它,但除了该库的其他方面,我什么都没有听到。 |
最新内容
相关内容
linux操作数据库命令?
linux操作数据库命令?,地址,服务,系统,密码,数据库,工具,名字,首页,命令,参数,如何实现MySQL数据库的基本用法在linux下1、mysql all-databaselinux系命令的操作?
linux系命令的操作?,工作,系统,信息,网络,命令,基础,简介,管理,目录,操作,linux的cd命令的使用方法cd ~:回到用户家目录。注:这得看你是用什么用linux操作常用命令?
linux操作常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,基础,工具,linux常用命令及用法linux系统常用操作命令如下:ls:全拼list,功能是列linux操作命令重命名?
linux操作命令重命名?,图片,软件,名称,名字,文件,命令,状态,代码,工具,系统,Linux下批量修改文件名1、Linux下修改文件名有mv和rename。 其中mlinux目录操作命令d?
linux目录操作命令d?,工作,系统,信息,命令,情况,基础,数据,名称,地址,目录,linux常用的命令有哪些1、linux系统常用操作命令如下:ls:全拼list,功linux初学者操作命令?
linux初学者操作命令?,工作,系统,信息,命令,网络,地址,单位,位置,管理,数据,Linux必学的网络操作命令1、Linux的网络命令比较多,其中一些命令像linux操作命令远程?
linux操作命令远程?,软件,密码,系统,名称,图片,电脑,地址,网站,工具,服务,如何用XShell连接远程Linux服务器xshell连接服务器的步骤如下:需要下linux操作命令实验一?
linux操作命令实验一?,系统,基础,设备,西安,概念,软件,电脑,技术,管理,分析,在LINUX的Ubuntu版本下的一个实验,小弟不才,实在是没学好,求大家linux里的操作命令?
linux里的操作命令?,工作,系统,信息,地址,命令,标准,位置,目录,功能,操作,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux分辨率操作命令?
linux分辨率操作命令?,系统,情况,分辨率,底部,状态,命令,屏幕,屏幕分辨率,桌面,显示器,怎么调整linux的屏幕分辨率?1、Linux系统更改屏幕分辨linux命令行操作软件?
linux命令行操作软件?,软件,工具,系统,名称,管理,工作,命令,设计,平台,标准,在Linux下有哪些视图或者命令行工具可用1、top 1 vmstat vmstat命linux常见操作命令?
linux常见操作命令?,系统,工作,信息,管理,地址,命令,目录,单位,数据,标准,linux必学的60个命令1、安装和登录命令:login、shutdown、halt、rebo