Java中日期处理

三世轮回 提交于 2020-03-27 18:16:20

主要涉及到

java.util.Calendar;

java.util.Date;

java.sql.Date;

java.sql.Time;

java.sql.Timestamp;

其中java.util.Date;是java.sql.Date; java.sql.Time; java.sql.Timestamp;的父类

1. Calendar

1.1 获取Calendar

  单例获取:

Calendar calendar = Calendar.getInstance();

  多态获取:

Calendar calendar = new GregorianCalendar();

1.2 设置日期时间

    当得到一个Calendar的实例之后,该实例存储的就是当前的时间(默认时区或者构造的时候指定时区),如果要更改此日期时间,则 可以使用set()方法:

  如:

  set(int year, int month, int date)

  set(int year, int month, int date, int hourOfDay, int minute, int second)等一系列重载的方法。

cal.set(2099,9,22,23,59,59);
Date date4 = cal.getTime();

    这里要注意在使用Calender的set()方法的时候,月份是从0开始计算的的,所以上面的9实际指的的十月,并且Calendar是以日历的形式计算日期的。比如2013-01-30

  这个日期:2013非闰年,01代表2月份,而该年的2月份只有28天,所以日期设定为30时,计算结果会自动往后延2天。所以得到的实际日期是:

  2013-03-02 + 当前时间.打印结果形如:[Sat Mar 02 15:53:17 CST 2013]

1.3 功能

  1.3.1 获取Date,long类型的时间毫秒值

    通过 calendar.getTime()获取Date

Date date = calendar.getTime();

    通过 calendar.getTimeInMillis() 获取long类型的时间毫秒数,可以作为Time和Timestamp的构造函数参数,用于获取这两类对象

Time time = new Time(calendar.getTimeInMillis);
Timestamp time = new Timestamp(calendar.getTimeInMillis);  

  1.3.2 比较日期

  1.3.3 和时区,星期打交道

  1.3.4 获取指定日期的前后偏移

    比如获取当前日期的后三天,前五天等等

  .... 

2. java.util.Date

  这个是核心的对象

2.1 获取

  构造方法:

java.util.Date date = new java.util.Date();

  Calendar获取:

java.util.Date date = Calendar.getInstance().getTime();

  DateFormat获取:

String dateString = "2099-10-22 23:59:59";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设定格式
java.util.Date date3 = df.parse(dateString); //将字符串转化为日期

  由第三种方式,可以知道,可以由字符串转化为Date类型,反之也可以由Date转为String

1.3 获取java.sql.Time

  构造方法(Date):

Date nowDate = new Date();
Time time = new Time(nowDate.getTime());

  构造方法(System):

long now= System.currentTimeMillis();
Time time = new Time(now);

  Calendar:

long now = calendar.getTimeInMillis();
Time time = new Time(now);

  基本都是通过构造方法创建,参数传入一个long类型值即可

  当有了Time的实例对象后可以使用setTime(long time);重新设置时间了

1.4获取java.sql.Timestamp

  Timestamp和Time类似,基本上也是使用构造方法获取

//通过Date
Timestamp ts1 = new Timestamp(new Date().getTime());
//通过System
Timestamp ts2 = new Timestamp(System.currentTimeMillis());
//通过Calendar
Timestamp ts3 = new Timestamp(calendar.getTimeInMillis());

 

  

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!