Java日期时间及其格式化

本文介绍Java中日期时间处理的方法,包括使用Date类获取当前时间、按照特定格式输出日期时间及利用SimpleDateFormat进行自定义格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.sunchis.com/html/java/basic/2010/0303/39.html


在应用程序设计中,经常需要显示时间和日期。如果想输出满意的日期时间格式,一般需要编写大量的代码经过各种算法才能实现。format()方法通过给定的特殊转换符作为参数来实现对日……

1、java.util.Date类

用于表示日期和时间,要获取当前时间,可以使用下面的代码:

  1. Dated=newDate();
  2. System.out.println(d.toString());

下面是输出的结果:

Mon Feb 06 15:45:47 CST 2006

如果想按照特定的格式进行输出,可以按照下面的方法完成,但是现在的版本中建议不要使用。

  1. intyear=d.getYear()+1900;
  2. intmonth=d.getMonth()+1;
  3. intdate=d.getDate();
  4. inthour=d.getHours();
  5. intminute=d.getMinutes();
  6. intsecond=d.getSeconds();
  7. System.out.println(year+"-"+month+"-"+date+""+hour+":"+minute+":"+second);

执行的结果如下:

2006-2-6 15:52:31

如果想根据年月日来确定一个Date对象可以先创建一个对象,然后使用 setter方法来完成,例如:setYear(int)、setMonth(int)等,当然这些方法也是建议不使用。如果想对时间进行比较灵活的处理可以使用DateFormat和SimpleDateFormat。

如果想按照下面的格式进行输出:

2006年02月06日 16点05分37秒

可以使用下面的代码:

  1. DateFormatdf=newSimpleDateFormat("yyyy年MM月dd日hh点mm分ss秒");
  2. Stringstr=df.format(d);
  3. System.out.println(str);

格式中yyyy表示年份,可以写2位,MM表示月份,可以写1位,dd表示日,可以写1位,hh表示小时,mm表示分钟(注意大小写),ss表示秒。

注意:DateFormat和SimpleDateFormat在 java.text包中,使用的时候需要引入。

要想把一个日期字符串转换成一个时间,例如把“2006-2-6”转换成日期,可以使用下面的代码:

  1. Stringdates="2006-2-6";
  2. //定义日期字符串
  3. DateFormatdf2=newSimpleDateFormat("yyyy-MM-dd");
  4. //定义日期字符串的格式
  5. Dated2;
  6. //声明日期对象
  7. try{
  8. d2=df2.parse(dates);
  9. //把日期字符串转换成日期
  10. System.out.println(df2.format(d2));
  11. }catch(ParseExceptionex){
  12. }

需要注意的是在转换的时候需要进行异常处理,因为在转换的时候可能会产生异常。

下面再来看看一些关于日期和时间的转换符:

常见日期格式化转换符
转换符说  明示  例
%te一个月中的某一天(1~31)2
%tb指定语言环境的月份简称Feb(英文)、二月(中文)
%tB指定语言环境的月份全称February(英文)、二月(中文)
%tA指定语言环境的星期几全称Monday(英文)、星期一(中文)
%ta指定语言环境的星期几简称Mon(英文)、星期一(中文)
%tc包括全部日期和时间信息星期四 十一月 26 10:26:30 CST 2009
%tY4位年份2009
%tj一年中的第几天(001~366)085
%tm月份03
%td一个月中的第几天(01~31)08
%ty2位年份09
时间格式化转换符
转换符说  明示  例
%tH2位数字的24小时制的小时(00~23)14
%tI2位数字的12小时制的小时(01~12)05
%tk2位数字的24小时制的小时(1~23)5
%tl2位数字的12小时制的小时(1~12)10
%tM2位数字的分钟(00~59)05
%tS2位数字的秒数(00~60)12
%tL3位数字的毫秒数(000~999)920
%tN9位数字的微秒数(000000000~999999999)062000000000
%tp指定语言环境下上午或下午标记下午(中文)、pm(英文)
%tz相对于GMT RFC 82格式的数字时区偏移量+0800
%tZ时区缩写形式的字符串CST
%ts1970-01-01 00:00:00至现在经过的秒数1206426646
%tQ1970-01-01 00:00:00至现在经过的毫秒数1206426737453
常见的日期时间组合转换符
转换符说  明示  例
%tF“年-月-日”格式(4位年份)2009-01-26
%tD“月/日/年”格式(2位年份)03/25/09
%tr“时:分:秒 PM(AM)”格式(12小时制)03:22:06 下午
%tT“时:分:秒”格式(24小时制)15:23:50
%tR“时:分”格式(24小时制)15:23

看个小例子:

  1. packagedate;
  2. importjava.util.Date;
  3. publicclassDateAndTime{
  4. publicstaticvoidmain(String[]args){
  5. Datedate=newDate();
  6. Stringtime=String.format("%tc",date);
  7. Stringform=String.format("%tF",date);
  8. System.out.println("全部的时间信息是:"+time);
  9. System.out.println("年-月-日的日期格式:"+form);
  10. }
  11. }

运行结果如下:

全部的时间信息是:星期三 三月 03 22:50:36 CST 2010

年-月-日的日期格式:2010-03-03


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值