Java中玩转日期总共就用到3个类:
java.util.Date日期类:
用于表示或存储精确值(long型值),通常用于进行精确值的获取或计算,用计算后的精确值创建一个新的日期对象, 精确值=当前日期时间距离“1970年1月1日0时0分0秒0毫秒”所经过的毫秒值
java.util.Calendar日历类:
提供了很多日期时间方面的操作运算功能,
如:获取年月日、时分秒、星期几等,也可进行以这些为单位的运算
如:获取年月日、时分秒、星期几等,也可进行以这些为单位的运算
java.text.DateFormat(其子类SimpleDateFormat)日期格式化类:
用于“日期文本串”和“日期对象”之间的转换,
如 "字符串格式的日期"-->日期对象 ,日期对象-->“指定格式的字符串”
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;import org.junit.Test;public class DateDemo {@Testpublic void dateDemo(){Date d1 = new Date();//当前日期时间System.out.println(d1.toString());long lg = d1.getTime();System.out.println("lg1:"+lg);//一天以后(精确值计算)lg = lg + 24*60*60*1000L; //注意,常量值后面要加L,否则bugSystem.out.println("lg2:"+lg);//把计算后的精确值重新封装成一个Date对象Date d2 = new Date(lg);System.out.println(d2.toString());//有关Date中的获取年月日时分秒等功能全部过时,以后采用Calender来实现int y = d2.getYear(); //返回值为: 日期的年份-1900System.out.println("y:"+(y+1900));//计算程序执行时间:long t1 = new Date().getTime();//程序开始位置int s=0;for(int i=0;i<1000000;i++){s++;s*=12345;}long t2 = new Date().getTime();//程序结束位置System.out.println("耗时(毫秒):"+(t2-t1));}@Testpublic void calenderDemo(){//日历对象要用工厂方法来创建对象Calendar c = Calendar.getInstance();//获取/设置日期中的年月日时分秒等字段值,都是用get(int field)/set(int field)方法int year = c.get(Calendar.YEAR);System.out.println("year:"+year);int hour1 = c.get(Calendar.HOUR);//12小时格式System.out.println("Hour1:"+hour1);int hour2 = c.get(Calendar.HOUR_OF_DAY);//24小时格式System.out.println("Hour1:"+hour2);int day1 = c.get(Calendar.DAY_OF_YEAR);//该年的第几天int day2 = c.get(Calendar.DAY_OF_MONTH);//该月的第几天int day3 = c.get(Calendar.DAY_OF_WEEK) -1;//星期几--1为Sunday,2为Monday,...int day4 = c.get(Calendar.DAY_OF_WEEK_IN_MONTH);//该月的第几周System.out.println(day1+","+day2+","+day3+","+day4);int month = c.get(Calendar.MONTH)+1; //一月为0,二月为1System.out.println("Month:"+month);c.set(Calendar.YEAR, 2020);//可以进行以年月日时分秒等为单位的加减运算c.add(Calendar.HOUR, -4800);System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月");//Calendar与Date的相互转换//Calendar-->DateDate d = c.getTime();System.out.println(d);//Date-->CalendarCalendar c2 = Calendar.getInstance();c2.setTime( new Date() );System.out.println( c2.get(Calendar.MINUTE) +"分");}@Testpublic void dateFormatDemo(){//把Date与字符串之间的转换//把Date对象-->字符串 ----格式化//DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");Date d = new Date();String str = df.format(d);//格式化System.out.println(str);//把字符串-->Date对象 -----解析String ss = "3.25.2018 19:57";SimpleDateFormat sdf = new SimpleDateFormat("MM.dd.yyyy HH:mm");try {Date dd = sdf.parse(ss);//解析String s2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分").format(dd);System.out.println(s2);} catch (ParseException e) {e.printStackTrace();}}
}