时间日期类

简介: 时间日期类

、时间日期类

1、Date类

  • Date() 使用日期和时间初始化对象
  • Date(long millisec) millisec是从1970年1月1日起的毫秒数

publicstaticvoidmain(Stringargs[]) {

   // 初始化 Date 对象

   Datedate=newDate();

   // 使用 toString() 函数显示日期时间

   System.out.println(date.toString());

   //Sat Apr 27 15:09:43 CST 2019

}

 

publicstaticvoidmain(String[] args) {

   // 初始化 Date 对象

   Datedate=newDate();

   longtime=date.getTime();

   longtime2=date.getTime(); // 获取时间

   System.out.println(time==time2);

}

 

// 比较哪个在前

publicstaticvoidmain(String[] args) {

   booleanbefore=newDate(97, 01, 05).before(newDate(99, 11, 16));

   System.out.println(before);

}

 

publicstaticvoidmain(Stringargs[]) {

   DatedNow=newDate( );

   SimpleDateFormatft=newSimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

   System.out.println("当前时间为: "+ft.format(dNow));

}

 

  • boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回 false。
  • boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返 回false。
  • Object clone( ) 返回此对象的副本。
  • int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回 0。调用对象在指定日期之则返回负数。调用对象在指定日期之则返回正数
  • int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛 出ClassCastException。
  • boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否 则返回false。
  • long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒 数。
  • int hashCode( ) 返回此对象的哈希码值。
  • void setTime(long time) 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日 期。
  • String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

2、simpleDateFormat 格式化日期

import  java.util.*;

importjava.text.*;

 

publicclassDateDemo {

publicstaticvoidmain(String[] args) {

 

  DatedNow=newDate( );

  SimpleDateFormatft=newSimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

 

  System.out.println("当前时间为: "+ft.format(dNow));

}

}// 当前时间为: 2018-09-06 10:16:34

  • 注意大小写为不同的含义,如MM是月份,mm是分 HH是24小时制 hh是12小时制

时间和日期的格式化编码

字母 描述 示例
G 纪元标记 AD
y 四位年份 2001
M 月份 July or 07
d 一个月的日期 10
h A.M./P.M. (1~12)格式小时 12
H 一天中的小时 (0~23) 22
m 分钟数 30
s 秒数 55
S 毫秒数 234
E 星期几 Tuesday
D 一年中的日子 360
F 一个月中第几周的周几 2 (second Wed. in July)
w 一年中第几周 40
W 一个月中第几周 1
a A.M./P.M. 标记 PM
k 一天中的小时(1~24) 24
K A.M./P.M. (0~11)格式小时 10
z 时区 Eastern Standard Time
' 文字定界符 Delimiter
" 单引号 `

使用printf格式化日期

  • %t开头+下面表格中的字母结尾
转 换 符 说 明 示 例
c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
F "年-月-日"格式 2007-10-27
D "月/日/年"格式 10/27/07
r "HH:MM:SS PM"格式(12时制) 02:25:51 下午
T "HH:MM:SS"格式(24时制) 14:28:16
R "HH:MM"格式(24时制) 14:28

importjava.util.Date;

 

publicclassDateDemo {

 

 publicstaticvoidmain(String[] args) {

    // 初始化 Date 对象

    Datedate=newDate();

    // %t 格式化  %n换行输出

    // %n只能用在printf语句中输出,而\n可以用在所有语句中输出

     

    //c的使用  

   System.out.printf("全部日期和时间信息:%tc%n",date);          

   //f的使用  

   System.out.printf("年-月-日格式:%tF%n",date);  

   //d的使用  

   System.out.printf("月/日/年格式:%tD%n",date);  

   //r的使用  

   System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);  

   //t的使用  

   System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);  

   //R的使用  

   System.out.printf("HH:MM格式(24时制):%tR",date);  

 }

}

全部日期和时间信息:星期一九月1010:43:36CST2012  

--日格式:2012-09-10  

//年格式:09/10/12  

HH:MM:SSPM格式(12时制):10:43:36上午  

HH:MM:SS格式(24时制):10:43:36  

HH:MM格式(24时制):10:43  

3、时间休眠(sleep)

  • 使当前线程进入停滞状态(阻塞进程),让出CPU的使用,给其他线程留出机会
  • 休眠的单位:毫秒(1000毫秒 = 1秒)
  • Thread.sleep(休眠时间)

importjava.util.*;

 

publicclassSleepDemo {

  publicstaticvoidmain(String[] args) {

     try {

        System.out.println(newDate( ) +"\n");

        Thread.sleep(1000*3);   // 休眠3秒

        System.out.println(newDate( ) +"\n");

     } catch (Exceptione) {

         System.out.println("Got an exception!");

     }

  }

}

4、Calendar类

  • 在java.util包下
  • Calendar是抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象
  • 设置和获取日期数据的特定部分
  • 通过Calendar类的getInstance()方法创建

publicstaticvoidmain(Stringargs[]) {

   Calendarc=Calendar.getInstance();//默认是当前日期

   System.out.println(c);

}

//输出

java.util.GregorianCalendar[time=1556350818634,areFieldsSet=true,areAllFields

Set=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offs

et=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firs

tDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=3,WEEK_OF_YEAR=17

,WEEK_OF_MONTH=4,DAY_OF_MONTH=27,DAY_OF_YEAR=117,DAY_OF_WEEK=7,DAY_OF_WEEK_IN

_MONTH=4,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=40,SECOND=18,MILLISECOND=634,ZO

NE_OFFSET=28800000,DST_OFFSET=0]

  • 创建一个指定日期的Calendar对象

注意:月份的起始值是0,[0,11]!!!

//创建一个代表2019年4月27日的Calendar对象

Calendarc1=Calendar.getInstance();

c1.set(2019, 4-1, 27);

 

  • Calendar类对象字段类型
常量 描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期几

// 获得年份

intyear=c1.get(Calendar.YEAR);

// 获得月份

intmonth=c1.get(Calendar.MONTH) +1;

// 获得日期

intdate=c1.get(Calendar.DATE);

// 获得小时

inthour=c1.get(Calendar.HOUR_OF_DAY);

// 获得分钟

intminute=c1.get(Calendar.MINUTE);

// 获得秒

intsecond=c1.get(Calendar.SECOND);

// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类

推)

intday=c1.get(Calendar.DAY_OF_WEEK);

 

// 设置完整字段

c1.set(2009, 6-1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

// 设置某个字段

c1.set(Calendar.DATE,10);

c1.set(Calendar.YEAR,2008);

//其他字段属性set的意义以此类推

 

//把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, 10);

//把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, -10);

  • 注意:日期设为0之后,就会变为上月的最后一天

publicstaticvoidmain(String[] args) {

   Calendarc1=Calendar.getInstance();

   c1.set(2017, 2, 1);

   System.out.println(c1.get(Calendar.YEAR)

   +"-"+c1.get(Calendar.MONTH)

   +"-"+c1.get(Calendar.DATE));

   c1.set(2017, 2, 0);

   System.out.println(c1.get(Calendar.YEAR)

   +"-"+c1.get(Calendar.MONTH)

   +"-"+c1.get(Calendar.DATE));

}

//输出

2017-2-1

2017-1-28   2相当于3月,日期为0变为上月的最后一天,即2月28

 


相关文章
|
6月前
|
Java
java8日期计算(偏移N周,返回指定星期的日期)
java8日期计算(偏移N周,返回指定星期的日期)
|
6月前
|
C++
【C++】:日期类的实现 -- 日期计算器
【C++】:日期类的实现 -- 日期计算器
67 0
|
7月前
|
C#
C#DateTime时间转换方法大全
C#DateTime时间转换方法大全
346 0
|
7月前
|
关系型数据库 MySQL
日期和时间类型
日期和时间类型。
65 2
|
7月前
|
存储 C++
[C++]日期类的实现
[C++]日期类的实现
70 0
|
7月前
|
编译器 C++
【C++】:日期类实现
【C++】:日期类实现
84 0
|
7月前
|
C++
(个人练习)日期类实现(c++)
学习类和对象时候练习的一个日期类,适合初学者,供大家参考。
67 0
|
7月前
|
Java C++ Python
日期类的实现
日期类的实现
64 0
C# 对于“日期时间(DateTime)“的处理 时间差计算
C# 对于“日期时间(DateTime)“的处理 时间差计算
|
C++
【C++基础】实现日期类
【C++基础】实现日期类
66 0