java日期相关类实例详解

一、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编程实现时间和时间戳相互转换实例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。