五、Java日期操作的类 1&#xff0e;Date类 java.util包里面的Date类&#xff0c;是Java里面进行日期操作常用类。Date类用来表示特定的瞬间&#xff0c;精确到毫秒。 1.1如何初始化Date 构造方法&#xff1a;Date() 分配 Date 对象并初始化此对象&#xff0c;以表示分配它的时候的当前时间&#xff08;精确到毫秒&#xff09;。使用Date类得到当前的时间。 构造方法&#xff1a;Date(long date) 分配 Date 对象并初始化此对象&#xff0c;以表示自从标准基准时间&#xff08;称为“历元&#xff08;epoch&#xff09;”&#xff0c;即 1970 年 1 月 1 日 00:00:00 格林威治时间&#xff09;以来的指定毫秒数。 2.2常用方法 方法&#xff1a;after(Date when) 测试此日期是否在指定日期之后 方法&#xff1a;before(Date when) 测试此日期是否在指定日期之前 方法&#xff1a;getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 2.3示例&#xff1a;简单的性能测试——监控一段代码运行所需要的时间 publicclass Test { publicstaticvoid main(String args[]) { long d1 &#61; new Date().getTime();//得到此时的时间 int sum &#61; 0; for(int i&#61;1;i<&#61;1000000;i&#43;&#43;){//看清楚了&#xff0c;可是一百万次 sum &#43;&#61;i; } System.out.println("从1加到1000000的和&#61;"&#43;sum); long d2 &#61; new Date().getTime();//得到此时的时间 System.out.println("从1加到1000000所耗费的时间是&#61;"&#43;(d2-d1)&#43;"毫秒"); } } 运行结果&#xff1a; 从1加到1000000的和&#61;1784293664 从1加到1000000所耗费的时间是&#61;20毫秒 2&#xff0e;DateFormat类和SimpleDateFormat类 在java.text包中的DateFormat类&#xff0c;是日期/时间格式化子类的抽象类&#xff0c;它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类&#xff08;如 SimpleDateFormat&#xff09;允许进行格式化&#xff08;也就是日期——>文本&#xff09;、解析&#xff08;文本——> 日期&#xff09;和标准化。 由于DateFormat是个抽象类&#xff0c;SimpleDateFormat类是它的子类&#xff0c;所以下面就主要按照SimpleDateFormat类来讲解。 2.1如何初始化 这里只讲述最常用到的构造方法&#xff0c;更多的请参看JDK文档。 构造方法&#xff1a;SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat 2.2日期和时间模式 日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中&#xff0c;未加引号的字母 &#39;A&#39; 到 &#39;Z&#39; 和 &#39;a&#39; 到 &#39;z&#39; 被解释为模式字母&#xff0c;用来表示日期或时间字符串元素。文本可以使用单引号 (&#39;) 引起来&#xff0c;以免进行解释。"&#39;&#39;" 表示单引号。所有其他字符均不解释&#xff1b;只是在格式化时将它们简单复制到输出字符串&#xff0c;或者在解析时与输入字符串进行匹配。 定义了以下模式字母&#xff08;所有其他字符 &#39;A&#39; 到 &#39;Z&#39; 和 &#39;a&#39; 到 &#39;z&#39; 都被保留&#xff09;&#xff1a;
2.3常用方法 方法&#xff1a;parse(String source) 从给定字符串的开始解析文本&#xff0c;以生成一个日期 方法&#xff1a;format(Date date) 将一个 Date 格式化为日期/时间字符串 这里只讲述最常用的方法&#xff0c;更多的方法请参看JDK文档。 2.4示例 import java.util.*; import java.text.*; publicclass Test { publicstaticvoid main(String args[]) { DateFormat df &#61; new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); Date d &#61; new Date(); //把当前时间转换成为我们熟悉的时间表达格式 String str &#61; df.format(d); System.out.println("当前时间是&#xff1a;"&#43;str); //然后再把字符串格式的日期转换成为一个Date类 try { Date d2 &#61; df.parse("2008-08-08 08:08:08 888"); System.out.println("北京奥运会开幕时间是&#xff1a;"&#43;d2.getTime()); } catch (ParseException e) { e.printStackTrace(); } } } 运行结果&#xff1a; 当前时间是&#xff1a;2008-07-22 00:57:45 612 北京奥运会开幕时间是&#xff1a;1218154088888 2.5说明 虽然JDK文档上说Date的毫秒值&#xff0c;是相对于格林威治时间1970年1月1号的0点&#xff0c;但实际测试&#xff0c;这个Date是跟时区相关的&#xff0c;也就是说在中国测试这个基准值应该是1970年1月1日的8点&#xff0c;不过这个不影响我们的处理&#xff0c;因为只要是同一个基准时间就可以了&#xff0c;而不用关心具体是多少&#xff0c;见下面的示例&#xff1a; publicclass Test { publicstaticvoid main(String args[]) { DateFormat df &#61; new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date d &#61; new Date(0L);//把时间设为0&#xff0c;表示到基准时间 //然后转换成为字符串看看是什么时候 String str &#61; df.format(d);
System.out.println("基准时间是&#xff1a;"&#43;str); } } 运行结果&#xff1a; 基准时间是&#xff1a;1970-01-01 08:00:00 000 3&#xff0e;Calendar类 java.util包中的Calendar类是Java里面另外一个常用的日期处理的类。Calendar 类是一个抽象类&#xff0c;它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 之间的转换提供了一些方法&#xff0c;并为操作日历字段&#xff08;例如获得下星期的日期&#xff09;提供了一些方法。 3.1如何初始化 Calendar类是通过一个静态方法getInstance()来获取Calendar实例。返回的 Calendar 基于当前时间&#xff0c;使用了默认时区和默认语言环境 如下&#xff1a;Calendar c &#61; Calendar.getInstance(); 3.2使用Calendar对日期进行部分析取 Calendar类一个重要的功能就是能够从日期里面按照要求析取出数据&#xff0c;如&#xff1a;年、月、日、星期等等。 方法&#xff1a;get(int field) 返回给定日历字段的值 示例如下&#xff1a; Import java.util.Calendar; publicclass Test { publicstaticvoid main(String args[]) { Calendar c &#61; Calendar.getInstance(); int year &#61; c.get(Calendar.YEAR); int month &#61; c.get(Calendar.MONTH);//注意&#xff1a;month特殊&#xff0c;是从0开始的&#xff0c;也就是0表示1月 int day &#61; c.get(Calendar.DAY_OF_MONTH);
System.out.println("现在是"&#43;year&#43;"年"&#43;(month&#43;1)&#43;"月"&#43;day&#43;"日"); } } 运行结果&#xff1a; 现在是2008年7月22日 3.3使用Calendar进行日期运算 这是Calendar另外一个常用的功能&#xff0c;也就是对日期进行加加减减的运算。 方法&#xff1a;add(int field, int amount) 根据日历的规则&#xff0c;为给定的日历字段添加或减去指定的时间量 示例如下&#xff1a; publicclass Test { publicstaticvoid main(String args[]) { Calendar c &#61; Calendar.getInstance(); c.add(Calendar.DATE, 12);//当前日期加12天&#xff0c;如果是-12就表示当前日期减去12天
int year &#61; c.get(Calendar.YEAR); int month &#61; c.get(Calendar.MONTH);//注意&#xff1a;month特殊&#xff0c;是从0开始的&#xff0c;也就是0表示1月 int day &#61; c.get(Calendar.DAY_OF_MONTH);
System.out.println("在当前日期加12天是"&#43;year&#43;"年"&#43;(month&#43;1)&#43;"月"&#43;day&#43;"日"); } } 运行结果&#xff1a;在当前日期加12天是2008年8月3日 3.4为Calendar设置初始值 方法setTime(Date date) 使用给定的 Date 设置此 Calendar 的当前时间 方法setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值 publicclass Test { publicstaticvoid main(String args[]) { Calendar c &#61; Calendar.getInstance();
c.setTimeInMillis(1234567890123L);
int year &#61; c.get(Calendar.YEAR); int month &#61; c.get(Calendar.MONTH);//注意&#xff1a;month特殊&#xff0c;是从0开始的&#xff0c;也就是0表示1月 int day &#61; c.get(Calendar.DAY_OF_MONTH);
System.out.println("设置的时间是"&#43;year&#43;"年"&#43;(month&#43;1)&#43;"月"&#43;day&#43;"日"); } } 运行结果&#xff1a;设置的时间是2009年2月14日
Java私塾跟我学系列——JAVA篇 网址&#xff1a;http://www.javass.cn 电话&#xff1a;010-68434236 |