java-Date、SimpleDateFotmat、Calendar

xiaoxiao2021-02-28  110

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负 long类型)表达一个特定的时间点 * 距离UTC(世界调整时间) 1970年1月1日 00:00:00 CST *java.util.Date类封装日期及时间信息,由于Date设计存在缺陷,所以在jdk1.1以后大部分方法被声明过时的,不再建议使用。 *现在仅仅用来表示时间。而与时间相关的操作全部使用Calendar来替代 * */ public class DateDemo { public static void main(String[] args) throws ParseException { Date date=new Date(); //系统当前的日期及时间信息,Date重写了toString()方法,用一个字符串来描述当前Date对象所表示的时间。 System.out.println(date);//Sat Jul 29 09:39:49 CST 2017 /**使用setTime和getTime设置及获取时间**/ long time=date.getTime(); System.out.println(time);//1970年1月1日至今的毫秒数 time+=60*60*24*1000; date.setTime(time); System.out.println(date);//Sun Jul 30 09:57:35 CST 2017 /** * SimpleDateFormat * java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。允许日期->文本,文本->日期 * y:年 M:月 d:日 H:24小时制 h:12小时制 m:分钟 s:秒 E:星期 a:上午下午 * String format(Date date)按照SDF指定的日期格式将给定的date表示的日期转换为字符串 * Date parse(String str)方法用于按照特定格式将表示是安静的字符串转换为Date对象 */ Date now=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 -E-a HH:mm:ss");//2017年07月29日 -星期六-下午 15:33:10 System.out.println(sdf.format(now));//日期转换字符串 String str="2017-07-12 15:12"; SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm"); System.out.println(sdf1.parse(str));//字符串转换为时间 /** * Calendar * java.util.Calendar类用于封装日历信息,其主要作用在于方法可以对时间分量进行运算 * Calendar是抽象类,其具体子类针对于不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高利历,阳历) * Calendar提供了一个静态方法getInstance来更具当前系统所在地区返回一个适用的实现类,大部分地区返回的都是阳历实现类 * * Date getTime():Calendar提供的该方法可以获取一个Date对象,该对象就表示当前Calendar所表示的日期 * void setTime(Date date):使当前Calendar表示给定的Date所表示的日期 */ Calendar calendar=Calendar.getInstance();//当前系统时间 System.out.println(calendar);//重写了toString,但是直观看不出日期 Date date1=calendar.getTime(); System.out.println(date1); /** * Calendar提供了方法: * int get(int field):该方法可以获取当前Calendar中指定时间分量所对应的值 * 时间分量是一个int值,在Calendar中有大量的常量定义了不同的时间分量 */ int year=calendar.get(Calendar.YEAR);//年 int month=calendar.get(Calendar.MONTH)+1;//月 是从0开始的 int day=calendar.get(Calendar.DAY_OF_MONTH);//月中的天 几号 int day1=calendar.get(Calendar.DAY_OF_WEEK);//周中的天 星期几 int day2=calendar.get(Calendar.DAY_OF_YEAR);//年中的天 今年的第几天 int day3=calendar.get(Calendar.DATE);//DATE等同于DAY_OF_MONTH 月中的天 int hour=calendar.get(Calendar.HOUR);//12小时制 int hour1=calendar.get(Calendar.HOUR_OF_DAY);//24小时制 int minute=calendar.get(Calendar.MINUTE);//分钟 int second=calendar.get(Calendar.SECOND);//秒 System.out.println(year+"-"+month+"-"+day+"-"+hour1+":"+minute+":"+second);//2017-7-29-15:33:10 /**int getActualMaximum(int field):给定此Calendar的时间值,返回指定日历字段可能拥有的最大值**/ int max=calendar.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println("本月"+max+"天");//本月31天 System.out.println("本年"+calendar.getActualMaximum(Calendar.DAY_OF_YEAR)+"天");//本年365天 /** * void set(int field,int value) * 对指定时间分量设定指定的值 * 表示2008-08-13 20:07:46 */ calendar.set(Calendar.YEAR, 2008); calendar.set(Calendar.MONTH,Calendar.AUGUST); calendar.set(Calendar.DAY_OF_MONTH,13); calendar.set(Calendar.HOUR_OF_DAY,20); calendar.set(Calendar.MINUTE, 7); calendar.set(Calendar.SECOND, 46); System.out.println(calendar.getTime());//Wed Aug 13 20:07:46 CST 2008 /** * void add(int field,int value) * 对指定时间分量加上给定的值,若给定对的值为负数则是减去给定的值 */ Calendar c=Calendar.getInstance(); c.add(Calendar.YEAR, 3);//加三年 c.add(Calendar.MONDAY, 2);//加2个月 c.add(Calendar.DAY_OF_YEAR, 5);//加5天 // c.set(Calendar.DAY_OF_WEEK, 2);//设置为当周的周一 System.out.println(c.getTime()); } }
转载请注明原文地址: https://www.6miu.com/read-22166.html

最新回复(0)