java的Date类和Calendar类获取系统当前的日期和时间,格式化输出系统的日期和时间

一、Date类

使用Date类的无参数构造方法创建的对象可以获取本机的当前日期和时间,例如:

Date date = new Date();

那么,当前date对象的实体中含有的日期和时间就是创建date对象时本机计算机的时间。假设当前时间是2016年10月01日20:30:39(CST时区),那么:

System.out.println(date);

输出的结果是 Sat Oct 01 20:30:39 CST 2016。可能有的人不喜欢这个输出格式,那么就可以用到下面所说的格式化输出方法。

二、格式化输出日期

可以使用String类的format方法对日期进行格式化,format方法:

format(格式化模式,日期列表);

假如当前系统时间是2022/05/01,那么:

Date date = new Date();
String s1 = String.format("%tY-%tm-%td"date,date,date);
String s2 = String.format("%tY年%tm月%td日",date,date,date);

s1的字符序列为2022-05-01
s2的字符序列为2022年05月01日
%tY、%tm、%td就是格式符分别表示年月日,会被后面的日期列表的具体内容所替换掉,除了格式符之外的其他符号都是普通符号,会被系统原样输出。

三、常用的格式符

%tY 将日期中的”年“格式化为4位形式,例如2008,2022
%ty 将日期中的“年”格式化为2位形式,例如08,02
%tm 将日期中的“月”格式化为2位形式,即01-13,01是1月,13是考虑到农历的因素
%td 将日期中的“日”格式化为2位形式,即01-31,01是一个月的第一天
%tH 将日期中的“时”格式化为2位形式(24小时制),即00-23,00是午夜
%tI(不是小写的L,是大写的i) 将日期中的“时”格式化为2位形式(12小时制),即01-12
%tM 将日期中的“分”格式化为2位形式,即00-60(60是支持润秒的一个特殊值)
%tS 将日期中的“秒”格式化为2位形式,即00-60
%tZ 将日期所在时区的名称格式化为标准缩写,例如CST。

四、格式化同一个日期对象

如果所使用的日期对象都是同一个日期对象,那么个可以在格式化模式中使用“<",含有”<"的格式符和它前面的格式符使用的是同一个日期对象,假如现在的时间是:2022年05月01日,那么:

Date date = new Date();
String s1 = String.format("%tY年%<tm月%<td日",date);
String s2 = String.format("%tY-%<tm-%<td",date);

s1的字符序列是:2022年05月01日
s1的字符序列是:2022-05-01

五、Calendar类

上面使用的Date类有个不方便的地方,假如我想获取单独的年、月、日、时、分、秒,用Date类对象是比较不方便的。于是乎就有了它的改良版——Calendar类,可以说Calendar类是完胜Date类。
构造方法:

Calendar calendar = Calendar.getInstance();

得到的calendar对象默认代表当前的日历,如果想修改日历可以调用其set()方法:

//year取负数表示公元前
public final void set(int year,int month,int date);
public final void set(int year,int month,int date,int hour,int minute);
public final void set(int year,int month,int date,int hour,int minute,int second);

calendar对象调用方法public int get(int field)可以获取相关的年、月、日、时、分、秒、星期等,参数 filed的有效值由Calendar的静态常量指定,例如:
获取 “年”,

calendar.get(Calendar.Year);

获取 ”月“,值得注意的是,月份从0开始表示,返回0表示1月,返回1表示2月以此类推

calendar.get(Calendar.DAY_OF_MONTH);

获取 ”时“,小时采用24小时制

calendar.get(Calendar.HOUR_OF_DAY);

获取 “分”,

calendar.get(Calendar.MINUTE);

获取 ”秒“,

calendar.get(Calendar.SECOND);

获取 “星期“,星期从周日开始,返回1表示星期日,返回2表示星期一,以此类推

calendar.get(Calendar.DAY_OF_WEEK);

此外,Calendar对象也支持格式化输出,假设现在的时间是2022/05/01,那么

Calendar calendar = Calendar.getInstance();
String s1 = String.format("%tY年%<tm月%<td日",calendar);
System.out.println(s1);

输出的结果是:2022年05月01日

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值