Java中日期处理
主要涉及到
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());