时间处理相关类

本文介绍了Java中日期时间的处理,包括Date类的使用,如获取年、月、日等信息,以及如何通过System.currentTimeMillis()获取当前时间。同时详细讲解了SimpleDateFormat类在日期格式化和解析中的作用,例如如何将字符串转换为Date对象,以及Date对象转换为指定格式的字符串。文中还特别提到了日期解析时关于两位数年份的处理规则。
摘要由CSDN通过智能技术生成

        时间在我们的生活中可以说是处处可见,在开发的过程中也是非常的常见的。在程序中,日期的存储可以是数字,也可以是长整型的数字。0代表的就是1970年1月1日 00:00:00,而我们中国是处于东八区,所以为1970年1月1日 08:00:00,往前推负数表示之前的时间,整数就是表示之后的时间。

        在日常中我们表示的时间是使用字符串的表示,如****年**月**日 时:分:秒的格式,因此为了能够把相应的长整型数据转换为我们想要的字符串,我们应该了解时间处理的一些知识。

在标准的Java类库中包含了Date类。它的对象表示一个特定的瞬间,精确到毫秒。

Date分配一个Date对象,并初始化此对象为当前的日期和对象精确到毫秒。

Date分配对象初始化此对象,以表示自从标准基准时间以来指定毫秒数。

相关类

常见方法

System

系统类

currentTimeMillis():当前时间

Date

日期类

new Date():当前时间

new Date(指定时间):指定时间

getTime():获取时间

setTime(指定时间):设置指定时间

SimpleDateFormat

格式器

new SimpleDateFormat(模板)

format():格式化为字符串

parse():转成时期

 

public static void main(String[] args) {
    long x =System.currentTimeMillis();//当前时间的相对毫秒数
    Date date = new Date();
    String time = (date.getYear()+1900)+"-"//获取时间的年份
            +(date.getMonth()+1)+"-"//获取时间的月份
            +date.getDay()+" "//获取时间的天数
            +date.getHours()+":"//获取时间的小时
            +date.getMinutes()+":"//获取时间的分钟
            +date.getSeconds();
    System.out.println(time);
    System.out.println("今天是周"+date.getDay());//星期几
    Date date1 = new Date(x);
    System.out.println(date1);
}

日期的格式化类SimpleDateFormat

存储指定的时间|日期到Date对象中

指定字符串--->Date;

Date对象--->写成满足指定格式的字符串;

  • Text:对于格式化,如果模式字母的数量是4以上,则使用完整的形式; 否则,如果有的话,使用简短或缩写形式。 对于解析,两种形式都是接受的,与模式字母的数量无关。
  • Number:对于格式化,模式字母的数量是最小位数,而较短的数字将零填充到此数量。 对于解析,模式字母的数量将被忽略,除非需要分隔两个相邻的字段。
  •  Year:如果格式化程序的Calendar是公历,则应用以下规则。

    • 对于格式化,如果模式字母数字为2,那么年份将被阶段为2位数;否则被解释为number。

    • 对于解析,如果模式字母的数量大于2,则年份将按字面解释,而不管数字的数量。所以使用“MM/dd/yyyy”模式“01/11/12”解析到公元12年1月11日

    • 为了使用缩写年份模式(“y或yy”)进行解析,SimpleDateFormat必须解释相对于某个世纪的缩写年份。它是通过将日期调整为在创建SimpleDateFormat实例之后的80年之前和20年之后进行的。 例如,使用1997年1月1日创建的“MM / dd / yy”模式和SimpleDateFormat实例,字符串“01/11/12”将被解释为2012年1月11日,而字符串“05/04 / 64“将被解释为1964年5月4日。在解析期间,只有由Character.isDigit (char)定义的两个数字组成的字符串将被解析为默认世纪。 任何其他数字字符串,例如一位数字字符串,三位或三位以上数字字符串,或两位数字字符串(不全部为数字)(例如“-1”),均按字面解释。 所以“01/02/3”或“01/02/003”的解析方式与公元3年1月2日相同。 同样,“01/02 / -3”在公元前4年1月2日被解析。

      否则,将应用日历系统特定的表单。 对于格式化和解析两者,如果模式字母数为4以上,则使用特定日历long form。 否则,使用一个特定日历short or abbreviated form。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 1.将制定的日期时间存储到Date
 * 2.有一个日期时间在Date,希望能够以不同的形式去查看
 */
public class simpleDateFormat {
    public static void main(String[] args) {
        //将一个给定的字符串,转换成Date
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");

        String str = "2021-01-01 8:00:00";
        try {
            Date date = simpleDateFormat.parse(str);
            System.out.println(date);//Fri Jan 01 08:00:00 CST 2021

            //Date对象 想要按照制定的格式查看
            String time = simpleDateFormat.format(date);
            System.out.println(time);//2021-01-01 08:00:00
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件小白人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值