时间类(一)【Date】

一、Date

java.util.Date 表示特定的时间(某一个瞬间),用来表示时间和日期,提供一系列操作。

计算机标准是根据Greenwich(格林威治)标准时间(GMT),由于中国属于东八区,所以要比 GMT 时间早8个小时

类的所有方法 Date 接受或返回年,月,日,小时,分钟和秒值,以下表述中使用:

  • y 年代表整数 y - 1900 。
  • 一个月由0到11的整数表示; 0是1月,1是2月…11是12月
  • 日期(月的一天)以通常的方式从1到31的整数表示。
  • 一小时由0到23之间的整数表示。因此,从午夜到凌晨1点的时间是小时0,从中午到下
  • 午1点的小时是12小时。
  • 一般以0〜59的整数表示 minute 。
  • 秒由0到61的整数表示; 值60和61仅发生在闰秒上,甚至仅在实际上正确跟踪闰秒的
  • Java实现中发生。 由于目前引入闰秒的方式,在同一分钟内不会发生两个闰秒,但是
  • 本规范遵循ISO C的日期和时间约定。

在所有情况下,为这些目的而提供的方法的论证不必在指定范围内; 例如,可以将日期指定为1月32日,并将其解释为2月1日

1.创建对象

Date date = new Date();

1.成员变量

private transient long fastTime;// 保存Date所表示的时间

2.构造方法

目前两个未弃用的方法:

构造说明
Date()分配一个 Date对象,并初始化它,当前系统时间
Date(long date)分配一个 Date对象,date毫秒。即1970年1月1日00:00:00 GMT

例:

public Date(long millis) {
fastTime = millis ;
}
public Date() {
this(System.currentTimeMillis());//将System.currentTimeMillis()保存到fastTime
}

System.currentTimeMillis() 也是获取自1970年1月1日以来,以此日期为准的00:00:00GMT的毫秒数。

public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
Date date1 = new Date(1000L);
System.out.println(date1);
}

注意: CST 表示 China Standard Time (中国标准时间)

3.成员方法

Date 中大部分方法都已经经被弃用,仅存在以下成员方法:

方法返回值描述
after(Datewhen)boolean测试此日期是否在指定日期之后
before(Datewhen)boolean测试此日期是否在指定日期之前
clone()object返回该对象的副本
compaerTo(Date another)int比较两个日期。(anotherDate - 要比较的日期。 返回: 如果参数 Date 等于此 Date,则值为 0;如果此日期在 Date 参数之前,则为小于 0 的值;反之,大于0)
equals(Object obj)boolean比较两个日期是否相等
from(Instant instant)static Date从 Instant 对象获取 Date 的实例
getTime()long返回此 Date 对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
hashCode()int返回该对象的哈希码值。
setTime(long time)void将此 Date 对象设置为表示 1970 年 1 月 1 日 00:00:00 GMT 之后的时间点(毫秒)。
toInstant()instant将此 Date 对象转换为 Instant。
toString( )String将此 Date 对象转换 String

其中 toString() 的格式是: dow mon dd hh:mm:ss zzz yyyy

  • dow(day of week) 是星期几( Sun, Mon, Tue, Wed, Thu, Fri, Sat )。
  • mon 是月( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )。
  • dd 是一个月的某天( 01 到 31 ),作为两位十进制数字。
  • hh 是一天的小时( 00 到 23 ),作为两位十进制数字。
  • mm 是一小时内的分钟( 00 至 59 ),为两位十进制数字。
  • ss 是分钟内的秒( 00 到 61 ),作为两位十进制数字。
  • zzz 是时区。 标准时区缩写包括通过方法 parse识别的缩写 。 如果时区信息不可用,那么 zzz 是空的 - 也就是说,它根本没有字符。
  • 年份 为 yyyy ,为四位十进制数字

例:

public class DateTest {
    public static void main(String[] args) {
        //创建date对象


        //当前时间
        Date date = new Date();
        System.out.println(date);
        //当前时间
        Date date1 = new Date(System.currentTimeMillis());
        System.out.println(date1);

        //从1990年 0 月 0 日开始108年 9月01号
        Date date2 = new Date(108, 9, 01);
        System.out.println(date2);//Wed Oct 01 00:00:00 CST 2008

        System.out.println(date.toLocaleString());//2023年8月27日 下午5:07:03

        System.out.println(date.toGMTString());//27 Aug 2023 09:07:03 GMT


        Date date4 = new Date(1000L * 60 * 60 * 24 * 365);


        //比较date\date4
        System.out.println(date4);//Fri Jan 01 08:00:00 CST 1971
        System.out.println(date.before(date4));//false
        System.out.println(date.after(date4));//true
        System.out.println(date.compareTo(date4));//1


        date = new Date();
        ;

        //获取自1990年以来的年份
        System.out.println(date.getYear()); // 123
        //月份从0开始
        System.out.println(date.getMonth()); // 7
        //日期0-31日
        System.out.println(date.getDate()); // 27
        //一周的而第几天,周末是第0天
        System.out.println(date.getDay()); // 0  dayOfWeek
        //24小时制,
        System.out.println(date.getHours()); // 17
        //分
        System.out.println(date.getMinutes()); // 28
        //秒
        System.out.println(date.getSeconds());//35
    }
}

4.改变Date实例

Date 实例(对象)创建后,内部的毫秒值 fastTime 是可以改变的。

public static void main(String[] args) {
    long ms = 1000L * 60 * 60 * 24 * 365 * 25 ;//1995
    final Date birthdate = new Date(ms);
    System.out.println(birthdate);//Sat Dec 25 08:00:00 CST 1999
    birthdate.setTime(1000);//改变Date对象
    System.out.println(birthdate);//Thu Jan 01 08:00:01 CST 1970
}

5.格式化Date对象

方法名返回值类型描述
format(Date date)String格式化给定的 Date 对象为字符串。
parse(String source)Date将给定的字符串解析为 Date 对象。
toPattern()String获取当前日期格式的模式。
applyPattern(String pattern)void设置日期格式模式。

日期格式化模式字符

模式字符描述示例
y年份,可以使用 1-4 个 y 表示不同的位数yyyyyyyyyy
M月份,可以使用 1-2 个 M 表示不同的位数MMM
d月份中的日期,可以使用 1-2 个 d 表示不同的位数ddd
H小时数(24 小时制),可以使用 1-2 个 H 表示不同的位数HHH
h小时数(12 小时制),可以使用 1-2 个 h 表示不同的位数hhh
m分钟数,可以使用 1-2 个 m 表示不同的位数mmm
s秒数,可以使用 1-2 个 s 表示不同的位数sss
S毫秒数,可以使用 1-3 个 S 表示不同的位数SSSS
E星期几的缩写形式E
EEEE星期几的完整形式EEEE
a上午/下午标记a
z时区zzzzz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值