java时间操作总结
来源:互联网 发布:mac上不了网 编辑:程序博客网 时间:2024/06/09 22:07
项目中有用到时间操作,特总结下来。
Java提供了一系列用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。
1:Date类
Java提供了Date类来处理日期、时间,Date类既包含日期,也包含时间。Date类从JDK1.0版本就开始存在,存在时间久远,提供的6个构造器中,已有4个建议放弃使用,目前使用的为:
- Date():生成一个以系统当前时间日期为准的Date对象。
- Date(long date):根据指定的long整型数来生成一个Date对象。
下面是一个简单的示例:
public void test()throws InterruptedException{ //创建一个当前系统时间对象 Date date1 = new Date(); //将当前线程休眠4秒钟 Thread.sleep(4000); //休眠4秒钟后,创建date2时间对象 Date date2 = new Date(); System.out.println(date1); System.out.println(date2); System.out.println(date1.before(date2)); System.out.println(date1.after(date2)); System.out.println(date1.compareTo(date2)); date2.setTime(date1.getTime()); System.out.println(date1.equals(date2)); }
2: Calendar类
Calendar是一个抽象类,用于表示日历。因为Date类在设计上存在一些缺陷,所以Java提供Calendar类来更好的处理日期和时间。
Calendar类不能直接创建,可以通过类方法来创建一个Calendar的子类,Java本身提供了GregorianCalendar子类,通过getInstance()方法返回默认时区和语言环境获得一个日历。返回的实例就是Java提供的默认子类
- void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- int get(int field):返回指定日历字段的值。
- int getActualMaximum(int field):返回指定日历字段的可能拥有的最大值。
- int getActualMinimum(int field):返回指定日历字段的可能拥有的最小值。
- void roll(int field,int amout):与add方法相似,区别在于超过该字段的最大范围时,也不会向上一个字段进位。
- void set(int field,int value):将给定的日历字段设置为给定值。
- void set(int year,int month,int date):设置Calendar对象的年、月、日3个字段值。
- void set(int year,int month,int date,int hourOfDay,int minute,int second):设置Calendar对象的年、月、日、时、分、秒6个字段的值。
Calendar cal = Calendar.getInstance(); System.out.println(cal.get(Calendar.YEAR)); cal.add(Calendar.MONTH, 12); System.out.println(cal.get(Calendar.YEAR)); System.out.println("add会进位"); System.out.println("==========================="); cal = Calendar.getInstance(); System.out.println(cal.get(Calendar.YEAR)); cal.roll(Calendar.MONTH, 12); System.out.println(cal.get(Calendar.YEAR)); System.out.println("roll不会进位"); System.out.println("===========================");
//获得年月日时分秒毫秒Calendar cal = Calendar.getInstance(); System.out.println("年:"+cal.get(Calendar.YEAR)); System.out.println("月:"+cal.get(Calendar.MONTH));System.out.println("日:"+cal.get(Calendar.DATE));System.out.println("时:"+cal.get(Calendar.HOUR)); System.out.println("分:"+cal.get(Calendar.MINUTE ));System.out.println("秒:"+cal.get(Calendar.SECOND));System.out.println("毫秒:"+cal.get(Calendar.MILLISECOND));System.out.println("================================");System.out.println(cal.getActualMaximum(Calendar.MONTH));System.out.println(cal.getActualMinimum(Calendar.MONTH));System.out.println("今年到此时的星期数:"+cal.get(Calendar.WEEK_OF_YEAR));System.out.println("今年到此时的天数:"+cal.get(Calendar.DAY_OF_YEAR));System.out.println("今月到此时的星期数:"+cal.get(Calendar.WEEK_OF_MONTH));System.out.println("今月到此时的天数:"+cal.get(Calendar.DAY_OF_MONTH));System.out.println("今月到此时的天数:"+cal.get(Calendar.DAY_OF_MONTH));System.out.println("这个星期到此时的天数:"+cal.get(Calendar.DAY_OF_WEEK));System.out.println("这个月有多少天:"+cal.getActualMaximum(Calendar.DATE));System.out.println("到此时的小时:"+cal.get(Calendar.HOUR_OF_DAY));System.out.println("指示当前月中的第几个星期:"+cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));System.out.println("距 GMT 的大致偏移量:毫秒值"+cal.get(Calendar.ZONE_OFFSET));
一个小例子:Calendar calendar = Calendar.getInstance(); calendar.add(calendar.YEAR,-1); calendar.add(calendar.MONTH,1); for(int i = 0;i<12;i++) { int year = calendar.get(calendar.YEAR); int month = calendar.get(calendar.MONTH)+1; if (month == 0) { month = 12; } System.out.println("年:"+year); System.out.println("月:"+month); calendar.add(calendar.MONTH,1); }
注:有一点需要注意,月份1月~12月转为数字是0~11
星期日~星期六转为数字是1~7
public void test3(){ Calendar cal = Calendar.getInstance(); System.out.println(cal.getActualMaximum(Calendar.MONTH)); System.out.println(cal.getActualMinimum(Calendar.MONTH)); System.out.println(cal.getActualMaximum(Calendar.DATE)); System.out.println(cal.getActualMinimum(Calendar.DATE)); System.out.print("1月:"+Calendar.JANUARY+", "); System.out.print("2月:"+Calendar.FEBRUARY+", "); System.out.print("3月:"+Calendar.MARCH+", "); System.out.print("4月:"+Calendar.APRIL+", "); System.out.print("5月:"+Calendar.MAY+", "); System.out.println("6月:"+Calendar.JUNE+", "); System.out.print("7月:"+Calendar.JULY+", "); System.out.print("8月:"+Calendar.OCTOBER+", "); System.out.print("9月:"+Calendar.SEPTEMBER+", "); System.out.print("10月:"+Calendar.OCTOBER+", "); System.out.print("11月:"+Calendar.NOVEMBER+", "); System.out.println("12月:"+Calendar.DECEMBER+", "); System.out.print("星期日:"+Calendar.SUNDAY+", "); System.out.print("星期一:"+Calendar.MONDAY+", "); System.out.print("星期二:"+Calendar.TUESDAY+", "); System.out.println("星期三:"+Calendar.WEDNESDAY+", "); System.out.print("星期四:"+Calendar.THURSDAY+", "); System.out.print("星期五:"+Calendar.FRIDAY+", "); System.out.print("星期六:"+Calendar.SATURDAY);}
所以在使用时需要进行相应的操作
3:使用DateFormat格式化日期
DateFormat是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例,是同一个类型的实例。
- 列表内容
- getDateInstance():返回一个日期格式器,只对日期进行格式化。
- getTimeInstance():返回一个时间格式器,只对时间进行格式化。
- getDateTimeInstance():返回一个日期、时间格式器,既对时间又对日期进行格式化。
- getInstance():返回一个默认的系统相关的日期、时间格式器。
public void test4() throws ParseException{ Date date = new Date(); DateFormat dateFormat = DateFormat.getInstance(); System.out.println(dateFormat.format(date)); DateFormat dateFormat1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA); DateFormat dateFormat12 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA); DateFormat dateFormat13 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA); DateFormat dateFormat14 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA); System.out.println("SHORT:"+dateFormat1.format(date)); System.out.println("LONG:"+dateFormat12.format(date)); System.out.println("FULL:"+dateFormat13.format(date)); System.out.println("MEDIUM:"+dateFormat14.format(date)); DateFormat dateFormat2 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA); DateFormat dateFormat22 = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA); DateFormat dateFormat23 = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA); DateFormat dateFormat24 = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA); System.out.println("SHORT:"+dateFormat2.format(date)); System.out.println("LONG:"+dateFormat22.format(date)); System.out.println("FULL:"+dateFormat23.format(date)); System.out.println("MEDIUM:"+dateFormat24.format(date)); System.out.println("北京时间:"+dateFormat12.format(date)+" "+dateFormat22.format(date)); DateFormat dateFormat3 = DateFormat.getDateTimeInstance(); System.out.println(dateFormat3.format(date)); System.out.println("********************************"); TimeZone timeZone = dateFormat.getTimeZone(); System.out.println("本机默认时区:"+timeZone.getDefault()); System.out.println("时区名称:"+timeZone.getDisplayName()); System.out.println("********************************"); Date date1 = dateFormat.parse("17-6-13 下午2:08"); System.out.println("解析时间字符串:"+date1);}
4:使用SimpleDateFormat格式化日期
SimpleDateFormat是DateFormat的子类,是一种更简单的日期格式,以为我们指定的格式对日期进行格式化。
public void test5(){ Date date = new Date(); SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); System.out.println(simple.format(date)); simple = new SimpleDateFormat("yyyy/MM/dd"); System.out.println(simple.format(date));}
源代码
https://github.com/wolf521/demo/tree/master/src/main/java/com/example/demo/date/service
- java时间操作总结
- Android(java) 关于时间的操作总结
- java对时间操作的常用总结
- 日期时间操作总结
- paip.日期时间操作以及时间戳uapi php java python 总结
- JAVA中的时间操作
- java中的时间操作
- java中的时间操作
- java中的时间操作
- java中的时间操作
- java中的时间操作
- java中的时间操作
- java 时间操作
- JAVA中的时间操作
- java中的时间操作
- java中的时间操作
- java中的时间操作
- JAVA中的时间操作
- ES6箭头函数中的this绑定问题
- 中间件
- 试着写的一个shell脚本
- filesystemxmlapplicationcontext和ClassPathXmlApplicationContext 的区别
- 简单高效的实现Android App全局字体替换
- java时间操作总结
- android studio 3.0中配置Kotlin
- 移动通信技术
- iframe调用总结
- Android动画基础:平移、缩放、旋转、透明度
- Oralce存储过程中创建表
- 欢迎使用CSDN-markdown编辑器
- [线性基+贪心] BZOJ2460: [BeiJing2011]元素
- 作为一切的开始