对Java中的日期进行格式化处理

前言

如果用java.util.Date来直接输出日期,格式会比较固定,不够灵活。那如何设置输出日期的格式呢?又如何来按照自己想要的格式来输出日期呢?

日期转字符串

首先我们先要知道java中年月日等时间用什么字母可以替代

y 代表年
M 代表月
d 代表日
H 代表24进制的小时
h 代表12进制的小时
m 代表分钟
s 代表秒
S 代表毫秒

代码如下:

package date2;

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

public class TestDate {

	public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //制定输出格式
		Date d = new Date();
		String str = sdf.format(d); //将日期转换为字符串且格式按照之前制定的
		System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
		//下面同理
		SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
		Date d2 = new Date();
		String str2 = sdf1.format(d2);
		System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str2);
	}
}

我们创建SimpleDateFormat对象用并且用自己想要的格式来初始化它,随后创建日期类,将日期类按照给定的格式转换成字符串,最后打印。

结果:

    当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: 2019-05-19 16:44:45 812
    当前时间通过 yyyy-MM-dd 格式化后的输出: 2019-05-19

知道了日期转换为字符串,那字符串又如何转换为日期呢?

字符串转日期

字符串想要转换为日期类首先要确保字符串中的模式(yyyy/MM/dd HH:mm:ss)需要和日期格式保持一致,如果不一样就会抛出解析异常ParseException。

具体代码:

package date2;

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

public class TestDate2 {
	public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		String str = "2019/5/19 13:10:12";
		try { //String转换为日期
			Date d = sdf.parse(str);
			System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
			System.out.println();
			System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,String.valueOf(d)); //这里用valueof的效果和tostring效果相当
			System.out.println();
		}catch(java.text.ParseException e) {
			e.printStackTrace();
		}
	}
}

首先还是要制定日期格式,然后将字符串初始化为给定的格式的模式,随后尝试进行转换,初始化日期类需要先指定格式,然后将日期转换为字符串(这里tostring和String.valueOf效果相当)

结果:

    字符串 2019/5/19 13:10:12 通过格式 yyyy/MM/dd HH:mm:ss
    转换为日期对象: Sun May 19 13:10:12 GMT+08:00 2019
    字符串 2019/5/19 13:10:12 通过格式 yyyy/MM/dd HH:mm:ss
    转换为日期对象: Sun May 19 13:10:12 GMT+08:00 2019
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值