Java日期格式化

  在Java日期格式化中,用到的日期操作类主要有Date,Calendar,DateFormat,SimpleDateFormat。

  

Date

类Date表示特定的瞬间,精确到毫秒。

现在Date类中的方法基本上都不用了,不推荐直接使用Date类。

package com.fuwh.date;

import java.util.Date;

public class DateTest01 {

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

Calendar

Calendar类是一个抽象类。它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

该类中提供了丰富多样的日期操作类。

 实例

package com.fuwh.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarTest01 {
    public static void main(String[] args) {
        Calendar calendar=new GregorianCalendar();
        /*
         * 输出如下格式的日期
         * 2017年03月06日20时33分50秒258毫秒
         */
        StringBuffer dateTime=new StringBuffer();
        dateTime.append(calendar.get(Calendar.YEAR)).append("年");
        dateTime.append(addZero(calendar.get(Calendar.MONTH)+1,2)).append("月");
        dateTime.append(addZero(calendar.get(Calendar.DATE),2)).append("日");
        dateTime.append(addZero(calendar.get(Calendar.HOUR_OF_DAY),2)).append("时");
        dateTime.append(addZero(calendar.get(Calendar.MINUTE),2)).append("分");
        dateTime.append(addZero(calendar.get(Calendar.SECOND),2)).append("秒");
        dateTime.append(calendar.get(Calendar.MILLISECOND)).append("毫秒");
        
        System.out.println(dateTime.toString());
    }
    
    public static String addZero(int temp,int len){
        StringBuffer s=new StringBuffer();
        s.append(temp);
        if(s.length()<len){
            s.insert(0, "0");
        }
        return s.toString();
    }
}
View Code

DateFormat/SimpleDateFormat

DateFormat类是在java.text包中,Format类的子类。是一个抽象类。通常使用其子类SimpleDateFormat来取得指定格式的日期或者日期格式的转化。

在SimpleDateFormat类中,通过指定模式,来对日期进行格式化。

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

主要方法:

public final String format(Date date):将一个Date格式化为日期/时间字符串

public Date parse(String source) throws ParseException:从给定字符串的开始解析文本,以生成一个日期,该方法不使用给定字符串的整个文本

 实例

package com.fuwh.format;

import java.text.SimpleDateFormat;
import java.util.Date;

public class FormatTest01 {
    public static void main(String[] args) {
        //取得某固定模式的时间戳
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmssSSS");
        System.out.println(sdf.format(new Date()));
    }
}
View Code

原文地址:https://www.cnblogs.com/zerotomax/p/6501284.html