JavaCookbook-6.日期
来源:互联网 发布:奢侈品 知乎 编辑:程序博客网 时间:2024/06/06 01:50
说到Java的日期,要提到一个小故事。公元前和公元后日期符号分别为BC和AD这里的BC为Before Christ而AD表示Anno Domini(希腊语:有上帝的年)。现在一般采用的BCE和CE来表示。Java早期版本时间起始为1970-1-1日,后期加入许多其它日历类,我们来模拟一个现实时间的程序:
Date date = newDate();System.out.println(date); DateFormat df =DateFormat.getDateInstance();System.out.println(df.format(date)); DateFormat df2 =DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);System.out.println(df2.format(date)); SimpleDateFormatsdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(sdf.format(date));Calendar c =Calendar.getInstance();c.set(2013, 0,1);System.out.println(DateFormat.getDateInstance(DateFormat.LONG).format(c.getTime()));
字符串转换为日期使用的是DateFormat的parse方法。
StringdateString = args[0]!=null?args[0]:"2012-12-12";SimpleDateFormatsdf2 = new SimpleDateFormat("yyyy-MM-dd");Date d =sdf2.parse(dateString);
对于日期的加减可以使用Date的getTime方法得到毫秒,在此基础上进行加减毫秒的运算。也可以使用Calendar的add方法加减一定时间。实例如下:
Date d =sdf2.parse(dateString);System.out.println(sdf2.format(d));Date now = newDate();long t =now.getTime();t -=2*24*60*60*1000;Date then = newDate(t);System.out.println(sdf2.format(then)); Calendar c =Calendar.getInstance();System.out.println(sdf2.format(c.getTime()));c.add(Calendar.YEAR,1);System.out.println(sdf2.format(c.getTime()));
对于两个日期之间的间隔,求法为将两个时间转换为长整型,再相减,最后将差值进行格式化:
long a =sdf2.parse("1987-02-16").getTime();long b = newDate().getTime();long distance =b-a;System.out.println(distance);
比较日期采用转化为long型毫秒值的方式,大值为在后的日期信息,小值为在前的日期。同时Date对象有equals方法。提供了before和after方法。同时system的两个方法nanoTime返回当前系统时间的毫微秒,currentTimeMillis返回当前系统的毫秒时间。
long start =System.nanoTime();long startms =System.currentTimeMillis();a =sdf2.parse("1987-02-16");Date b =sdf2.parse("1987-02-15");System.out.println(a.equals(b));System.out.println(a.before(b));System.out.println(a.after(b)); Calendar c =Calendar.getInstance();System.out.println(c.get(Calendar.DAY_OF_MONTH));System.out.println((System.nanoTime()-start)/1000+"ns");System.out.println(System.currentTimeMillis()-startms+"ms");
- JavaCookbook-6.日期
- JavaCookbook-5.数字
- JavaCookbook-7.结构化数据
- JavaCookbook-1.编译、运行和调试
- JavaCookbook-2.Java的运行环境
- JavaCookbook-3.字符串与4.正则表达式
- JavaCookbook-8.泛型foreach和枚举
- JavaCookbook-9.面向对象的技术10.输入和输出
- 日期
- 日期
- 日期
- 日期
- 日期
- 日期
- 日期
- 日期
- 日期
- 日期
- [设计模式]ChainOfResponsibility责任链模式
- Java compiler level 问题解决办法
- LinearLayout加载动态view时显示不全解决办法
- JAVA中代码顺序,静态块 静态变量,加载顺序!
- 精确异常与非精确异常
- JavaCookbook-6.日期
- 浅谈矩阵分解以及应用(2)
- WPF中更改Image控件的source(使用相对路径)
- oracle中length()与lengthb()区别
- Service Terms - Service Request, Service System, Service System Component
- iOS开发视频教程 UI部分:1、iOS概述和架构
- 通用类_获取手机通讯录
- 〖数学算法〗大数模幂运算快速算法
- 软件安装之arcsde10.0集群