java日期相关类实例详解
程序员文章站
2024-02-19 12:05: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编程实现时间和时间戳相互转换实例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!