一、JDK1.8之前日期时间类

  

二、 java.lang.System类

  System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒GMT之间以毫秒为单位的时间差。此方法适于计算时间差。

三、java.util.Date 类

  它的对象表示一个特定的瞬间,精确到毫秒。

  Java中时间的表示说白了也是数字,是从标准纪元1970年1月1日0时0分0秒GMT到某个时刻的毫秒数,类型是long

  理解:一维的时间轴,选择1970年1月1日0时0分0秒时间为0刻度,1毫秒一刻度。

  (1)构造方法

  1. Date(): 源代码:this(System.currentTimeMillis());
  2. Date(long date)

  

  (2)常用方法

  1. getTime():返回自 1970 1 1 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
  2. toString():把此 Date 对象转换为以下形式的 String dow mon dd hh:mm:ss zzz yyyy
           其中:dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat), zzz是时间标准。

  

  (3)已过时方法

  1. public Date(int year,int month,int date,int hrs,int min,int sec)
  2.   参数:
  3.   year - 1900 的年份。
  4.   month - 0-11 之间的月份。
  5.   date - 一月中 1-31 之间的某一天。
  6.   hrs - 0-23 之间的小时数。
  7.   min - 0-59 之间的分钟数。
  8.   sec - 0-59 之间的秒数。
  9. getYear() JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。
  10. getMonth()从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。返回的值在 0 11 之间,值 0 表示 1 月。
  11. getDate() JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。返回的值在 1 31 之间
  12. getDay()从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。 返回值 (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天
  13. getHours()从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。返回值是一个数字(0 23
  14. getMinutes()从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。 返回值在 0 59 之间。
  15. getSeconds()从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。回的值在 0 61 之间。值 60 61 只可能发生在考虑了闰秒的 Java 虚拟机上。

  

四、java.util.TimeZone和Locale

  Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值,日期就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。

  获取 Locale 对象:

  1. Locale(String language)
  2. Locale(String language, String country)
  3. Locale.CHINALocale.US

  Demo:

  1. public static void main(String[] args) {
  2. Locale loc = Locale.CHINA;
  3. System.out.println(loc);//zh_CN
  4. System.out.println(Locale.US);//en_US
  5. System.out.println(Locale.JAPAN);//ja_JP
  6.  
  7. Locale c = new Locale("zh","CN");
  8. System.out.println(c);
  9. }

  通常,使用 TimeZone的getDefault 获取 TimeZone,getDefault 基于程序运行所在的时区创建 TimeZone。例如,对于在日本运行的程序,getDefault 基于日本标准时间创建 TimeZone 对象。

  也可以用TimeZone的 getTimeZone 及时区 ID 获取 TimeZone 。例如美国太平洋时区的时区 ID 是 "America/Los_Angeles"。因此,可以使用下面语句获得美国太平洋时间 TimeZone 对象:

  1. TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");

  

  Demo:

  1. public static void main(String[] args) {
  2. TimeZone t = TimeZone.getDefault();
  3. System.out.println(t);
  4.  
  5. String[] all = TimeZone.getAvailableIDs();
  6. for (String id : all) {
  7. System.out.println(id);
  8. }
  9.  
  10. TimeZone t1 = TimeZone.getTimeZone("America/New_York");
  11. System.out.println(t1);
  12.  
  13. TimeZone t2 = TimeZone.getTimeZone("Asia/Shanghai");
  14. System.out.println(t2);
  15. }

五、java.util.Calendar

  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

人们对于时间的认识是:某年某月某日,这样的日期概念。计算机是long类型的数字。通过Calendar在二者之间搭起桥梁。而且Calendar提供了很多关于日期时间计算的方法。

  GregorianCalendar(公历)是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

  注意

    月份:一月是0,二月是1,以此类推,12月是11

    星期:周日是1,周二是2,。。。。周六是7

  Demo:

  1. //默认语言环境的时间(时区)
  2. Calendar c = new GregorianCalendar();
  3. /*
  4. * java.util.GregorianCalendar[
  5. * time=1480667849712,
  6. * areFieldsSet=true,
  7. * areAllFieldsSet=true,
  8. * lenient=true,
  9. * zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],
  10. * firstDayOfWeek=1,
  11. * minimalDaysInFirstWeek=1,
  12. * ERA=1,
  13. * YEAR=2016,
  14. * MONTH=11,
  15. * WEEK_OF_YEAR=49,//本年第49周
  16. * WEEK_OF_MONTH=1,//本月第1周
  17. * DAY_OF_MONTH=2,
  18. * DAY_OF_YEAR=337,//本年第337天
  19. * DAY_OF_WEEK=6,
  20. * DAY_OF_WEEK_IN_MONTH=1,
  21. * AM_PM=1, //下午
  22. * HOUR=4,
  23. * HOUR_OF_DAY=16, //HOUR是12小时制, HOUR_OF_DAY是24小时制
  24. * MINUTE=37,
  25. * SECOND=29,
  26. * MILLISECOND=712,
  27. * ZONE_OFFSET=28800000,
  28. * DST_OFFSET=0]
  29. */
  30. public static void main(String[] args) {
  31. //默认语言环境的时间(时区)
  32. Calendar c = new GregorianCalendar();
  33.  
  34. int year=c.get(Calendar.YEAR);
  35. int month=c.get(Calendar.MONTH);
  36. int date=c.get(Calendar.DAY_OF_MONTH);
  37.  
  38. int hour=c.get(Calendar.HOUR_OF_DAY);
  39. int minute=c.get(Calendar.MINUTE);
  40. int second=c.get(Calendar.SECOND);
  41. int mill=c.get(Calendar.MILLISECOND);
  42. int week=c.get(Calendar.DAY_OF_WEEK);
  43.  
  44. StringBuffer dateStr=new StringBuffer();
  45. dateStr.append(year).append("年");
  46. dateStr.append(month+1).append("月");
  47. dateStr.append(date).append("日").append(" ");
  48. dateStr.append(hour).append("时");
  49. dateStr.append(minute).append("分");
  50. dateStr.append(second).append("秒");
  51. dateStr.append(mill).append("毫秒").append(" ");
  52.  
  53. String[] weeks={"日","一","二","","四","五","六"};
  54. dateStr.append("星期").append(weeks[week-1]);
  55.  
  56. System.out.println(dateStr);
  57. }

  根据指定的日期获取对象:

  1. public static void main(String[] args) {
  2. Calendar c = new GregorianCalendar(2018, 6, 13);
  3. // c.set(2018, Calendar.DECEMBER, 4, 12, 12, 0);
  4. // c.setTime(new Date());
  5. //15天之后
  6. //c.add(Calendar.DATE, 15);
  7. //2个月之前
  8. //c.add(Calendar.DAY_OF_MONTH, -2);
  9. //12小时之后
  10. c.add(Calendar.HOUR, 12);
  11.  
  12. Date time = c.getTime();//转成日期
  13. System.out.println(time);
  14. }

getInstance() 方法

  1. public static Calendar getInstance()使用默认时区和语言环境获得一个日历。返回的 Calendar 基于当前时间,使用了默认时区和默认语言环境。
  2. public static Calendar getInstance(TimeZone zone, Locale aLocale)使用指定时区和语言环境获得一个日历。返回的 Calendar 基于当前时间,使用了给定的时区和给定的语言环境。

  Demo:

  1.   public static void main(String[] args) {
  2. Calendar c = Calendar.getInstance();
  3. System.out.println(c);
  4.  
  5. Calendar c2 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Shanghai"), Locale.CHINA);
  6. System.out.println(c2);
  7.  
  8. Calendar c3 = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"), Locale.US);
  9. System.out.println(c3);
  10. }

六、java.text.DateFormat和SimpleDateFormat

  完成字符串和时间对象的转化:

  1. String format(date)
  2. Date parse(string)

  Demo:

  1. public static void main(String[] args) {
  2. Date date = new Date();
  3. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 是本年的第几D");
  4. System.out.println(sf.format(date));
  5.  
  6. String s = "2016-12-01 14:12:23";
  7. SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  8. try {
  9. Date d = sf2.parse(s);
  10. System.out.println(d);
  11. } catch (ParseException e) {
  12. e.printStackTrace();
  13. }
  14. }

Java 之 JDK1.8之前日期时间类的更多相关文章

  1. jdk1.8新日期时间类(DateTime、LocalDateTime)demo代码

    //获取当前时间 LocalDateTime d0 = LocalDateTime.now(); System.out.println(DataConvertUtil.localDateTimeToS ...

  2. Java日期时间类

    日期时间类有三种: 一.java.util.Date:一般用于声明日期时间类型的变量. 二.java.sql.Date:一般用于数据库日期时间的映射. 三.java.util.Calendar:一般用 ...

  3. Java日期时间API系列3-----Jdk7及以前的日期时间类的不方便使用问题

    使用Java日期时间类,每个人都很熟悉每个项目中必不可少的工具类就是dateutil,包含各种日期计算,格式化等处理,而且常常会遇到找不到可用的处理方法,需要自己新增方法,处理过程很复杂. 1.Dat ...

  4. Java日期时间API系列2-----Jdk7及以前的日期时间类在mysql数据库中的应用

    1.java中与数据库相关的时间类 java提供与mysql方便交互的三种数据类型: java.sql.Date java.sql.Time java.sql.Timestamp 它们都是继承java ...

  5. 日期时间类:Date,Calendar,计算类:Math

    日期时间类 计算机如何表示时间? 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms). 计算机中时间2 ...

  6. 详解 JDK8 新增的日期时间类

    JDK8 新增的日期时间类 在本人之前的博文<处理时间的类 -- System类.Date类 .SimpleDateFormat类 与 Calendar类>中,讲到过表示时间的类,有三类: ...

  7. jdk8环境下sprngboot/springmvc中JSR310新日期/时间类LocalDateTime显示效果带T

    如图所示: 日期时间类中带了一个T,以上这种格式LocalDateTime格式化的时候默认日期时间格式:ISO.DATE_TIME(按笔者目前的知识理解是ISO8601规范中的日期时间格式化) 想要把 ...

  8. Object类、日期时间类、system类及StringBuilder字符串容器

    一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是 ...

  9. 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结

    1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018             年月日时分秒    CST代表北 ...

随机推荐

  1. fd (int)读写文件

    #include <string.h> #include <stdio.h> #include <fcntl.h> int main() { char *p1 = ...

  2. 201871010115 马北 《面向对象程序设计(java)》 第6-7周学习总结

    项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...

  3. 201871010118-唐敬博《面向对象程序设计(java)》第十二周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  4. Exception in createBlockOutputStream

    Exception in createBlockOutputStream 出现这个问题,可能是端口没打开,把异常往下拉,就可以看到哪个端口,在centos 打开端口

  5. zz在自动驾驶研发中充分发挥数据的潜能

    本次分享内容提纲 数据标注 数据驱动开发 数据驱动决策 前言 上图这是我加入小马智行之前的一个小故事.这不断的提醒我,人工智能需要有足够的数据量,并且充分发挥这些数据的潜能,是我们作为人工智能公司的一 ...

  6. HttpRuntime应用程序运行时

    System.Web.HttpRuntime类是整个Asp.net服务器处理的入口. 这个类提供了一系列的静态属性,反映web应用程序域的设置信息,而且每个web应用程序域中存在一个System.We ...

  7. 【java】@SuppressWarnings

    作用:用于抑制编译器产生警告信息. 示例1——抑制单类型的警告: 示例2——抑制多类型的警告: 示例3——抑制所有类型的警告: 三.注解目标 通过 @SuppressWarnings 的源码可知,其注 ...

  8. LeetCode 1257. Smallest Common Region

    原题链接在这里:https://leetcode.com/problems/smallest-common-region/ 题目: You are given some lists of region ...

  9. 三层交换机DHCP配置实验(基于Cisco模拟器)

    实验设备: 三层交换机一台,主机若干台,直通线若干 实验目的: 实现客户机从DHCP(动态主机配置协议)服务器上获取动态IP地址. 实验步骤: 1.划分VLAN Switch>enable Sw ...

  10. [LeetCode] 891. Sum of Subsequence Widths 子序列宽度之和

    Given an array of integers A, consider all non-empty subsequences of A. For any sequence S, let the  ...