微信
支付宝
# Java 日期时间(传统) java.util包提供了Date类来封装当前的日期和时间。 Date类提供两个构造函数来实例化Date对象。 第一个构造函数使用当前日期和时间来初始化对象。 \`\`\`java Date( ) \`\`\` 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。 \`\`\`java Date(long millisec) \`\`\` Date对象创建以后,可以调用下面的方法。 \| 序号 \| 方法和描述 \| \| ---- \| ------------------------------------------------------------ \| \| 1 \| \*\*boolean after(Date date)\*\* 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。 \| \| 2 \| \*\*boolean before(Date date)\*\* 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。 \| \| 3 \| \*\*Object clone( )\*\* 返回此对象的副本。 \| \| 4 \| \*\*int compareTo(Date date)\*\* 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。 \| \| 5 \| \*\*int compareTo(Object obj)\*\* 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。 \| \| 6 \| \*\*boolean equals(Object date)\*\* 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。 \| \| 7 \| \*\*long getTime( )\*\* 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 \| \| 8 \| \*\*int hashCode( )\*\* 返回此对象的哈希码值。 \| \| 9 \| \*\*void setTime(long time)\*\* 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。 \| \| 10 \| \*\*String toString( )\*\* 转换Date对象为String表示形式,并返回该字符串。 \| ------ ## 获取当前日期时间 Java中获取当前日期和时间很简单,使用Date对象的 toString()方法来打印当前日期和时间,如下所示: \`\`\`java import java.util.Date; public class Main{ public static void main(String args\[\]) { // 初始化 Date 对象 Date date = new Date(); // 使用 toString() 函数显示日期时间 System.out.println(date.toString()); } } \`\`\` 尝试一下,以上实例编译运行结果如下: \`\`\`java Mon May 04 09:51:52 CDT 2013 \`\`\` ------ ## 日期比较 Java使用以下三种方法来比较两个日期: - 使用getTime( ) 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。 - 使用方法before(),after()和equals()。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date (99, 2, 18))返回true。 - 使用compareTo()方法,它是由Comparable接口定义的,Date类实现了这个接口。 ------ ## 使用SimpleDateFormat格式化日期 SimpleDateFormat是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat允许你选择任何用户自定义日期时间格式来运行。例如: \`\`\`java import java.util.\*; import java.text.\*; public class Main{ public static void main(String args\[\]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); } } \`\`\` 尝试一下 以上实例编译运行结果如下: \`\`\`java Current Date: Sun 2004.07.18 at 04:14:09 PM PDT \`\`\` ------ ## 简单的DateFormat格式化编码 时间模式字符串用来指定时间格式。在此模式中,所有的ASCII字母被保留为模式字母,定义如下: \| \*\*字母\*\* \| \*\*描述\*\* \| \*\*示例\*\* \| \| -------- \| ------------------------ \| ----------------------- \| \| G \| 纪元标记 \| AD \| \| y \| 四位年份 \| 2001 \| \| M \| 月份 \| July or 07 \| \| d \| 一个月的日期 \| 10 \| \| h \| A.M./P.M. (1\~12)格式小时 \| 12 \| \| H \| 一天中的小时 (0\~23) \| 22 \| \| m \| 分钟数 \| 30 \| \| s \| 秒数 \| 55 \| \| S \| 毫秒数 \| 234 \| \| E \| 星期几 \| Tuesday \| \| D \| 一年中的日子 \| 360 \| \| F \| 一个月中第几周的周几 \| 2 (second Wed. in July) \| \| w \| 一年中第几周 \| 40 \| \| W \| 一个月中第几周 \| 1 \| \| a \| A.M./P.M. 标记 \| PM \| \| k \| 一天中的小时(1\~24) \| 24 \| \| K \| A.M./P.M. (0\~11)格式小时 \| 10 \| \| z \| 时区 \| Eastern Standard Time \| \| ' \| 文字定界符 \| Delimiter \| \| " \| 单引号 \| \` \| ------ ## 使用printf格式化日期 printf方法可以很轻松地格式化时间和日期。使用两个字母格式,它以t开头并且以下面表格中的一个字母结尾。例如: \`\`\`java import java.util.Date; public class Main{ public static void main(String args\[\]) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); } } \`\`\` 尝试一下,以上实例编译运行结果如下: \`\`\`java Current Date/Time : Sat Dec 15 16:37:57 MST 2012 \`\`\` 如果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了。因此,可以利用一个格式化字符串指出要被格式化的参数的索引。 索引必须紧跟在%后面,而且必须以$结束。例如: \`\`\`java import java.util.Date; public class Main{ public static void main(String args\[\]) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } } \`\`\` 尝试一下,以上实例编译运行结果如下: \`\`\`java Due date: February 09, 2004 \`\`\` 或者,你可以使用\<标志。它表明先前被格式化的参数要被再次使用。例如: \`\`\`java import java.util.Date; public class Main{ public static void main(String args\[\]) { // 初始化 Date 对象 Date date = new Date(); // 显示格式化时间 System.out.printf("%s %tB %\
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Veylor
最近发布
常用SQL