格式化类

1. DateFormat类

DateFormate类是一个抽象类,不能被实例化,但它提供了一系列的静态方法来获取DateFormate类的实例对象。
作用:将Date对象表示的日期以指定的格式输出

  • 调用getDateInstance()方法获得的实例对象用于对日期部分进行格式化

  • 调用getDateTimeInstance()方法获得的实例对象可以对日期和时间部分进行实例化


    定义的常量作为参数传递:

  • FULL 完整格式

  • LONG 长格式

  • MEDIUM 普通格式

  • SHORT 短格式

package cn.edu.sdut.acm;

import java.text.*;
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Date date = new Date(); // 创建Date对象
        DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL); // FULL格式的日期格式器对象
        DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG); // LONG格式的日期格式器对象
        DateFormat mediumFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); // MEDIUM格式的日期/时间格式器对象
        DateFormat shortFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); // SHORT格式的日期/时间格式器对象

        System.out.println(fullFormat.format(date));
        System.out.println(longFormat.format(date));
        System.out.println(mediumFormat.format(date));
        System.out.println(shortFormat.format(date));
    } 
}

运行结果:
2019年10月28日星期一
2019年10月28日
2019年10月28日 下午6:40:15
2019/10/28 下午6:40



DateFormat提供parse(String source)方法,可以将字符串解析为Date对象,要求字符串必须符合格式要求,否则会抛出异常

package String;

import javax.sound.midi.Soundbank;
import java.text.DateFormat;
import java.text.ParseException;

public class Main {
    public static void main(String[] args) throws ParseException {
        DateFormat dt1 = DateFormat.getDateInstance(DateFormat.SHORT); // 创建SHORT类型的DateFormat对象
        DateFormat dt2 = DateFormat.getDateInstance(DateFormat.LONG); // 创建LONG格式的DateFormat对象

        String str1 = "2019/1/21"; // 定义两个日期格式的字符串
        String str2 = "2019年01月15日";

        System.out.println(dt1.parse(str1));
        System.out.println(dt2.parse(str2));
    }
}


2. SimpleDateFormat类

SimpleDateFormate类是DateFormat类的子类,可以创建实例对象。在创建实例对象时,它的构造方法需要接收一个表示日期格式模板的字符串参数。

Date对象 ------> 格式化字符串

package cn.edu.sdut.acm;

import java.text.*;
import java.util.*;

public class Main{
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("Gyyyy年MM月dd日:今天是yyyy年的第D天,E"); // 创建一个SimpleDateFormat对象
        System.out.println(sdf.format(new Date())); // 按SimpleDateFormat对象的日期模板格式化Date对象
    }
}

输出:
公元2019年10月28日:今天是2019年的第301天,周一


格式化字符串 ------> Date对象

package cn.edu.sdut.acm;

import java.text.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); // 创建SimpleDateFormat对象,并指定日期格式
        String str = "2019/11/11"; // 定义一个该日期格式的字符串
        System.out.println(sdf.parse(str)); // 将字符串解析为Date对象
    }
}

输出:
Mon Nov 11 00:00:00 GMT+08:00 2019

3.DateTimeFormatter类

其功能相当于DateFormat类和SimpleDateFormat类的合体,它不仅可以将日期,时间对象格式化为字符串,还能将特定格式的字符串解析为日期,时间对象。

  1. 日期/时间格式化:
package cn.edu.sdut.acm;

import java.text.*;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.*;

public class Main{
    public static void main(String[] args) throws ParseException {
        LocalDateTime date = LocalDateTime.now();
        // 1. 使用常量创建DateTimeFormatter
        DateTimeFormatter dtf1 = DateTimeFormatter.ISO_DATE_TIME;
        System.out.println(dtf1.format(date));

        // 2. 使用MEDIUM类型风格的DateTimeFormatter
        DateTimeFormatter dtf2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
        System.out.println(dtf2.format(date));

        // 3. 根据模式字符串来创建DateTimeFormatter格式器
        DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println(dtf3.format(date));
        System.out.println(date.format(dtf3));
    }
}

输出:

2019-10-28T19:40:30.6350935
2019年10月28日 下午7:40:30
2019-10-28 19:40:30
2019-10-28 19:40:30

  1. 解析字符串
package cn.edu.sdut.acm;

import java.nio.file.LinkOption;
import java.text.*;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.*;

public class Main{
    public static void main(String[] args) throws ParseException {
        // 定义两字日期格式的字符串
        String str1 = "2019-11-11 20:38:12";
        String str2 = "2019年11月11日 16时01分15秒";
        // 定义解析所用的格式器
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
        // 使用LocalDateTime的parse()方法进行解析
        LocalDateTime localDateTime1 = LocalDateTime.parse(str1, formatter1);
        LocalDateTime localDateTime2 = LocalDateTime.parse(str2, formatter2);

        System.out.println(localDateTime1);
        System.out.println(localDateTime2);
    }
}

输出:
2019-11-11T20:38:12
2019-11-11T16:01:15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值