首页 > 编程 > Java > 正文

java日期相关类实例详解

2019-11-26 11:04:34
字体:
来源:转载
供稿:网友

一、Date类

类 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日期相关类实例详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java开发基础日期类代码详解Java编程实现时间和时间戳相互转换实例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表