java 日期相关Date、SimpleDateFormat、Calendar区分和使用
2016-09-02 18:54
926 查看
一、Date类
类
Date类中很多方法已经过时,使用Calendar来替代。
常用方法有
long getTime()
void setTime(long time)
SimpleDateFormat根据特定的日期格式在Date和字符串之间转换
常用方法
String format(Date date):将日期按照指定格式转换成字符串
Date parse(String str):将字符串按照指定格式转换成Date
可以用来指定格式的字符
java.util.Calendar是抽象类,主要用来对时间分量进行计算。
常用方法
(1)Date和Calendar之间的转换
(2)getInstance()方法
Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()用来获取Calendar类型的实例
(3)get(int field)方法获取时间分量
(4)set()方法设置时间分量
(5)add()方法在当前时间分量基础上修改时间分量
(6)getActualMaximum()获取某个时间分量所允许的最大值
四、Date、SimpleDateFormat和Calendar的一个综合实例
@Test
public void test01() throws ParseException{
//要求用户输入一个日期,计算后,指定格式输出日期
/*String--SimpleDateFormat()-->Date
Date-->Calendar
使用Calendar进行相应计算
Calendar-->Date
Date--SimpleDateFormat-->String
*/
String input="2013-03-26";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(input);
Calendar c=Calendar.getInstance();
//set(),与add()
c.setTime(date);
c.add(Calendar.YEAR,1);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_WEEK,1);
date=c.getTime();
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒");
String strTime=sdf2.format(date);
System.out.println(strTime);
}
类
Date表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。
Date类中很多方法已经过时,使用Calendar来替代。
常用方法有
long getTime()
void setTime(long time)
public class T01Date { public static void main(String[] args) { //getTime():返回的时间是距离1970年的毫秒数.值不受setTime()的影响 //date值受setTime()的影响 Date date=new Date(); long current=date.getTime(); System.out.println(current);//1472002479966 System.out.println(date);//Wed Aug 24 09:34:39 CST 2016 long time=current+1000*60*60*24;//时间设置为明日此时 date.setTime(time); System.out.println(date.getTime());//1472002479966 System.out.println(current);//1472002479966 System.out.println(date);// Thu Aug 25 09:34:39 CST 2016 } }二、SimpleDateFormat
SimpleDateFormat根据特定的日期格式在Date和字符串之间转换
常用方法
String format(Date date):将日期按照指定格式转换成字符串
Date parse(String str):将字符串按照指定格式转换成Date
可以用来指定格式的字符
/** * java.text.SimpleDateFormat * 该类可以根据一个指定的日期格式将Date于String * 之间相互转换 * @author zc * */ public class T02SimpleDateFormat { public static void main(String[] args) throws ParseException { Date now =new Date(); //2016-08-12 09:55:23 //yyyy-MM-dd hh:ss:mm SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh时ss分mm秒"); String str = sdf.format(now); System.out.println(str); //a 居然能区分上下午汉字 String strDate="2012年12月20日下午12点20分30秒"; SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日ahh点ss分mm秒"); Date date=sdf2.parse(strDate); System.out.println(date); } }三、Calendar
java.util.Calendar是抽象类,主要用来对时间分量进行计算。
常用方法
(1)Date和Calendar之间的转换
//默认创建出来的Calendar的实现类表示当前系统时间 Calendar c=Calendar.getInstance(); //将Calendar转换为Date Date date=c.getTime(); //Date->Calendar /* * void setTime(Date date) * 该方法可以使当前Calendar表示给定的 * Date所表示的时间 * */ c.setTime(date); } }
(2)getInstance()方法
Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()用来获取Calendar类型的实例
(3)get(int field)方法获取时间分量
import java.util.Calendar; /** * Calendar提供了获取各个时间分量的值的方法 * @author zc */ public class T05Calendar2 { public static void main(String[] args) { Calendar c=Calendar.getInstance(); //获取年 int year=c.get(Calendar.YEAR); System.out.println("year:"+year);//2016 //获取月:月从0开始!!!,0表示一月 int month=c.get(Calendar.MONTH); System.out.println("month:"+month);//7 /* * 和天相关的时间分量 * DATE,DAY_OF_MONTH:是一致的,表示月中的第几天 * DAY_OF_YEAR:表示年中的天 * DAY_OF_WEEK:表示周中的天 * * */ System.out.println(c.get(Calendar.DATE)); System.out.println(c.get(Calendar.DAY_OF_MONTH)); System.out.println(c.get(Calendar.DAY_OF_YEAR)); System.out.println(c.get(Calendar.DAY_OF_WEEK)); int dow=c.get(Calendar.DAY_OF_WEEK)-1; String[] data={"日","一","二","三","四","五","六"}; System.out.println("周"+data[dow]); //获取小时,分钟,秒 HOUR_OF_DAY:24小时 HOUR:12小时 System.out.println(c.get(Calendar.HOUR_OF_DAY));//14 System.out.println(c.get(Calendar.HOUR));//2 System.out.println(c.get(Calendar.MINUTE)); System.out.println(c.get(Calendar.SECOND)); } }
(4)set()方法设置时间分量
/** * 设置时间分量 * @author zc * */ public class T06Calendar3 { public static void main(String[] args){ //表示2008-08-08 20:08:08 //设置年 Calendar c=Calendar.getInstance(); c.set(Calendar.YEAR,2008); //设置月,月从0开始 c.set(Calendar.MONTH,Calendar.AUGUST); //设置日 c.set(Calendar.DATE, 8); //设置时 c.set(Calendar.HOUR_OF_DAY,20); //设置分 c.set(Calendar.SECOND,8); //设置秒 c.set(Calendar.MINUTE,8); System.out.println(c.getTime()); //!!!设置的时间分量超出后,会自行进位 } }
(5)add()方法在当前时间分量基础上修改时间分量
(6)getActualMaximum()获取某个时间分量所允许的最大值
/** * 获取某个时间分量所允许的最大值 * @author zc */ public class T07Calendar4 { public static void main(String[] args) { Calendar c=Calendar.getInstance(); //查看当月共多少天 int days=c.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(days); //查看今年多少天 int doy=c.getActualMaximum(Calendar.DAY_OF_YEAR); System.out.println(doy); int t=c.getActualMaximum(Calendar.MINUTE); System.out.println(t); } }
四、Date、SimpleDateFormat和Calendar的一个综合实例
@Test
public void test01() throws ParseException{
//要求用户输入一个日期,计算后,指定格式输出日期
/*String--SimpleDateFormat()-->Date
Date-->Calendar
使用Calendar进行相应计算
Calendar-->Date
Date--SimpleDateFormat-->String
*/
String input="2013-03-26";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(input);
Calendar c=Calendar.getInstance();
//set(),与add()
c.setTime(date);
c.add(Calendar.YEAR,1);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_WEEK,1);
date=c.getTime();
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒");
String strTime=sdf2.format(date);
System.out.println(strTime);
}
相关文章推荐
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat
- java:日期相关Date,Calendar,SimpleDateFormat
- Java中时间相关函数Date、Calendar、SimpleDateFormat
- Java日期格式化及其使用例子收集 SimpleDateFormat担当重任,怎样格式化都行
- 关于java日期类Date,DateFormat,SimpleDateFormat,Calendar总结
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(2) 自己封装的Calendar接口
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar
- java 日期类型SimpledateFormat的使用实例
- 关于java日期类Date,DateFormat,SimpleDateFormat,Calendar总结
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar
- java常用类库续1(日期操作类Date、Calendar、DateFormat、SimpleDateFormat、Math与Random类)
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone
- Java中与时间相关的几个类(Date、Calendar、SimpleDateFormat)
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(4) DateFormat
- java 常用类 日期类 Date SimpleDateFormat Calendar
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(6) Locale
- [Java 11] Date 、Calendar 、 SimpleDateFormat 与 国际化 , 日期的简单处理
- [Java 11] Date 、Calendar 、 SimpleDateFormat 与 国际化 , 日期的简单处理