JDK1.8之前日期时间类

java.lang.System类

System类提供的publicstatic 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毫秒一刻度

构造方法:

[if !supportLists]l  [endif]Date():      源代码:this(System.currentTimeMillis());

[if !supportLists]l  [endif]Date(long date)

常用方法:

[if !supportLists]l  [endif]getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

[if !supportLists]l  [endif]toString():把此 Date 对象转换为以下形式的String: dow mon dd

hh:mm:ss zzz yyyy 其中:

   dow是一周中的某一天 (Sun,

Mon, Tue, Wed, Thu, Fri, Sat), zzz是时间标准。

已过时的方法:

[if !supportLists]l  [endif]public Date(int year,int month,int date,int hrs,int min,int sec)

参数:

year - 减 1900 的年份。

month - 0-11 之间的月份。

date - 一月中 1-31 之间的某一天。

hrs - 0-23 之间的小时数。

min - 0-59 之间的分钟数。

sec - 0-59 之间的秒数。

[if !supportLists]l  [endif]getYear() 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。

[if !supportLists]l  [endif]getMonth()从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。返回的值在 0 和 11 之间,值 0 表示 1 月。

[if !supportLists]l  [endif]getDate() JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。返回的值在 1 和 31 之间

[if !supportLists]l  [endif]getDay()从JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。返回值 (0 = Sunday, 1 = Monday, 2 =

Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天

[if !supportLists]l  [endif]getHours()从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。返回值是一个数字(0 至 23)

[if !supportLists]l  [endif]getMinutes()从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。返回值在 0 和 59 之间。

getSeconds()从JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。回的值在0 和61 之间。值 60 和 61 只可能发生在考虑了闰秒的 Java 虚拟机上。

java.util.TimeZone和Locale

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

获取Locale对象:

 Locale(String language)

 Locale(String language, String country)

 Locale.CHINA、Locale.US等



通常,使用 TimeZone的getDefault 获取 TimeZone,getDefault 基于程序运行所在的时区创建 TimeZone。例如,对于在日本运行的程序,getDefault 基于日本标准时间创建 TimeZone 对象。也可以用TimeZone的 getTimeZone 及时区 ID 获取 TimeZone 。例如美国太平洋时区的时区 ID 是 "America/Los_Angeles"。因此,可以使用下面语句获得美国太平洋时间 TimeZone 对象:TimeZonetz = TimeZone.getTimeZone("America/Los_Angeles");


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


//默认语言环境的时间(时区)

              Calendarc = new GregorianCalendar();

              /*

               * java.util.GregorianCalendar[

               * time=1480667849712,

               * areFieldsSet=true,

               * areAllFieldsSet=true,

               * lenient=true,

               * zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],

               * firstDayOfWeek=1,

               * minimalDaysInFirstWeek=1,

               * ERA=1,

               *YEAR=2016,

               * MONTH=11,

               * WEEK_OF_YEAR=49,//本年第49周

               * WEEK_OF_MONTH=1,//本月第1周

               *DAY_OF_MONTH=2,

               * DAY_OF_YEAR=337,//本年第337天

               * DAY_OF_WEEK=6,

               * DAY_OF_WEEK_IN_MONTH=1,       

               * AM_PM=1, //下午

               * HOUR=4,

               * HOUR_OF_DAY=16,  //HOUR是12小时制,HOUR_OF_DAY是24小时制

               * MINUTE=37,

               * SECOND=29,

               *MILLISECOND=712,

               * ZONE_OFFSET=28800000,

               * DST_OFFSET=0]

               */

    public static void main(String[] args) {

         //默认语言环境的时间(时区)

         Calendarc = new GregorianCalendar();

         int year=c.get(Calendar.YEAR);

         int month=c.get(Calendar.MONTH);

         int date=c.get(Calendar.DAY_OF_MONTH);

         int hour=c.get(Calendar.HOUR_OF_DAY);

         int minute=c.get(Calendar.MINUTE);

         int second=c.get(Calendar.SECOND);

         int mill=c.get(Calendar.MILLISECOND);

         int week=c.get(Calendar.DAY_OF_WEEK);

   StringBufferdateStr=new StringBuffer();

         dateStr.append(year).append("年");

         dateStr.append(month+1).append("月");

         dateStr.append(date).append("日").append("  ");

         dateStr.append(hour).append("时");

         dateStr.append(minute).append("分");

         dateStr.append(second).append("秒");

         dateStr.append(mill).append("毫秒").append("  ");

 String[]weeks={"日","一","二","","四","五","六"};

         dateStr.append("星期").append(weeks[week-1]);

  System.out.println(dateStr);

    }

    public static void main(String[] args) {

         Calendar c = new GregorianCalendar(2015, 6, 13);

//       c.set(2016, Calendar.DECEMBER, 4, 12, 12, 0);

//       c.setTime(new Date());

         //15天之后

         //c.add(Calendar.DATE, 15);

         //2个月之前

         //c.add(Calendar.DAY_OF_MONTH, -2);

         //12小时之后

         c.add(Calendar.HOUR, 12);

 Date time = c.getTime();//转成日期

         System.out.println(time);

    }

public static Calendar getInstance()使用默认时区和语言环境获得一个日历。返回的 Calendar 基于当前时间,使用了默认时区和默认语言环境。

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



java.text.DateFormat和SimpleDateFormat

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

[if !supportLists]l  [endif]String format(date)

[if !supportLists]l  [endif]Date parse(string)




©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容