扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Java语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分。日期是商业逻辑计算一个关键的部分。所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象。我们写了两篇文章,这是第一篇,我们将大概的学习日期,日期格式,日期的解析和日期的计算。
我们将讨论下面的类:
具体类(和抽象类相对)java.util.Date
抽象类java.text.DateFormat和它的一个具体子类,java.text.SimpleDateFormat
抽象类java.util.Calendar和它的一个具体子类,java.util.GregorianCalendar
具体类可以被实例化,但是抽象类却不能。你首先必须实现抽象类的一个具体子类。
Date类从Java开发包(JDK) 1.0就开始进化,当时它只包含了几个取得或者设置一个日期数据的各个部分的方法,比如说月,日,和年。这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,我们将在本文中进一步讨论它。这种改进旨在更好的处理日期数据的国际化格式。就象在JDK 1.1中一样,Date类实际上只是一个包裹类,它包含的是一个长整型数据,表示的是从GMT(格林尼治标准时间)1970年,1月1日00:00:00这一刻之前或者是之后经历的毫秒数。
创建一个日期对象
让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子。这个时间通常被称为Java虚拟机(JVM)主机环境的系统时间。
|
在星期六,2001年9月29日,下午大约是6:50的样子,上面的例子在系统输出设备上显示的结果是1001803809710。在这个例子中,值得注意的是我们使用了Date构造函数创建一个日期对象,这个构造函数没有接受任何参数。而这个构造函数在内部使用了System.currentTimeMillis()方法来从系统获取日期。
那么,现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了。我们如何才能以一种用户明白的格式来显示这个日期呢?在这里类java.text.SimpleDateFormat和它的抽象基类java.text.DateFormat就派得上用场了。
日期数据的定制格式
假如我们希望定制日期数据的格式,比方星期六-9月-29日-2001年。下面的例子展示了如何完成这个工作:
|
只要通过向SimpleDateFormat的构造函数传递格式字符串"EEE-MMMM-dd-yyyy",我们就能够指明自己想要的格式。你应该可以看见,格式字符串中的ASCII字符告诉格式化函数下面显示日期数据的哪一个部分。EEEE是星期,MMMM是月,dd是日,yyyy是年。字符的个数决定了日期是如何格式化的。传递"EE-MM-dd-yy"会显示Sat-09-29-01。请察看Sun公司的Web站点获取日期格式化选项的完整的指示。
将文本数据解析成日期对象
假设我们有一个文本字符串包含了一个格式化了的日期对象,而我们希望解析这个字符串并从文本日期数据创建一个日期对象。我们将再次以格式化字符串"MM-dd-yyyy"调用SimpleDateFormat类,但是这一次,我们使用格式化解析而不是生成一个文本日期数据。我们的例子,显示在下面,将解析文本字符串"9-29-2001"并创建一个值为001736000000的日期对象。
例子程序:
|
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者