简介
本文用示例介绍Java中的日期格式化类SimpleDateFormat的用法。
SimpleDateFormat的toString方法返回的String格式示例:Mon May 04 09:51:52 CDT 2013
常用方法
以下方法全都不是静态方法。必须先new一个SimpleDateFormat
| 方法名 | 作用 | 
| long getTime( ) | 对应的时间戳 | 
| void setTime(long time) | 根据时间戳设置时间 | 
| String format(Date date) | 把日期格式化为想要的格式 | 
| Date parse(String source) | 将字符串解析为Date | 
| boolean equals(Object date) | 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。 | 
| boolean after(Date date) | 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。 | 
| boolean before(Date date) | 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。 | 
日期格式化编码
日期和时间的格式化编码
时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:
| 字母 | 描述 | 有效值 | 示例 | ||||||||||||||||||
| G | 纪元标记 | AD | |||||||||||||||||||
| y | 四位年份 | yy, yyyy | 2001 | ||||||||||||||||||
| M | 月份 | MM,MMM,MMMM MM 二位数字显示月份。位数不够前面补 0 MMM 用月份名称简写显示月份,如 Nov MMMMM 用月份名称全称显示月份,如 November | 07 | ||||||||||||||||||
| d | 一个月的日期 | d,dd | 10 | ||||||||||||||||||
| h | A.M./P.M. (1~12)格式小时 | hh:二位数字显示 12 小时制的小时 ,位数不够前面补 0 | 12 | ||||||||||||||||||
| H | 一天中的小时 (0~23) | HH:二位数字显示 24 小时制的小时,位数不够前面补 0 | 22 | ||||||||||||||||||
| m | 分钟数 | mm:二位数字显示分钟,位数不够前面补 0 | 30 | ||||||||||||||||||
| s | 秒数 | ss:二位数字显示秒 ,位数不够前面补 0 | 55 | ||||||||||||||||||
| S | 毫秒数 | SSS:三位数字显毫秒,位数不够前面补 0 | 234 | ||||||||||||||||||
| E | 星期几 | Tuesday | |||||||||||||||||||
| D | 一年中的日子 | 0-366 | 360 | ||||||||||||||||||
| F | 一个月中第几周的周几 | 2 (second Wed. in July) | |||||||||||||||||||
| w | 一年中第几周 | 40 | |||||||||||||||||||
| W | 一个月中第几周 | 0-5 | 1 | ||||||||||||||||||
| a | A.M./P.M. 标记 | PM | |||||||||||||||||||
| k | 一天中的小时(1~24) | 1-24 | 24 | ||||||||||||||||||
| K | A.M./P.M. (0~11)格式小时 | 0-11 | 10 | ||||||||||||||||||
| z | 时区 | Eastern Standard Time | |||||||||||||||||||
| ' | 文字定界符 | Delimiter | |||||||||||||||||||
| " | 单引号 | 在两个'符号之间的字符串会被当做常量直接显示 | ` | ||||||||||||||||||
| 非字母字符 | 例如-/*&^%()数字等,直接填充字符串位置 | 
使用printf格式化日期
printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。
| 转换符 | 说 明 | 示 例 | 
| c | 包括全部日期和时间信息 | 星期六 十月 27 14:21:20 CST 2007 | 
| F | "年-月-日"格式 | 2007-10-27 | 
| D | "月/日/年"格式 | 10/27/07 | 
| r | "HH:MM:SS PM"格式(12时制) | 02:25:51 下午 | 
| T | "HH:MM:SS"格式(24时制) | 14:28:16 | 
| R | "HH:MM"格式(24时制) | 14:28 | 
普通转换
其他网址
基本转换
package org.example.a;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo{
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(date));
        try {
            Date date1 = sdf.parse("2020-07-20 20:30:10");
            System.out.println(date1);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}运行结果
Wed Jul 29 21:56:18 CST 2020
2020-07-29 21:56:18
Mon Jul 20 20:30:10 CST 2020cron与Date转换
package org.example.a;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class DateUtil {
    //日期转化为cron表达式
    public static String getCron(Date  date){
        String dateFormat="ss mm HH dd MM ? yyyy";
        if (date == null)
            return "";
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            return sdf.format(date);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }
    //cron表达式转为日期
    public static Date getCronToDate(String cron) {
        String dateFormat="ss mm HH dd MM ? yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        Date date = null;
        try {
            date = sdf.parse(cron);
        } catch (ParseException e) {
            return null;
        }
        return date;
    }
}
public class Demo{
    public static void main(String[] args) {
        System.out.println(DateUtil.getCron(new Date()));
        System.out.println(DateUtil.getCronToDate("0 0 2 3 12 ? 2012"));
    }
}执行结果
 
 12 05 22 29 07 ? 2020
Mon Dec 03 02:00:00 CST 2012 
时间戳与Date转换
package org.example.a;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
    public static void main(String[] args) {
        //获取当前时间戳
        Long timeStamp = System.currentTimeMillis();
        System.out.println(timeStamp);
        // 时间戳转换成时间
        Date date = new Date(timeStamp);
        System.out.println(date);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sd = sdf.format(date);
        System.out.println("date1: " + sd);
        //获取当前时间
        Date date2 = new Date();
        String sd2 = sdf.format(date2);
        System.out.println("date2: " + sd2);
        //时间转化为时间戳
        Long timeStamp2 = date2.getTime();
        System.out.println(timeStamp2);
    }
}执行结果
1594038062627
Mon Jul 06 20:21:02 CST 2020
date1: 2020-07-06 20:21:02
date2: 2020-07-06 20:21:02
1594038062669其他网址
Java 日期时间 | 菜鸟教程










