欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java日期相关类实例详解

程序员文章站 2024-04-02 10:00:40
一、date类 类 date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。...

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