Java中使用SimpleDateFormat类进行String类和Date类的相互转换

Java中使用SimpleDateFormat类进行String类和Date类的相互转换


先说结论: 经过实际尝试,猜测:中文环境下, 英文的星期几(如"Monday")无法写入Date对象中, 而中文的星期几(如"周一", “星期一”)可以写入Date对象。但星期几的确可以从Date对象中读取出来, 读取出来的也是中文的星期几。而年月日时分秒毫秒的写入和读取都是可行的。

下面是实验过程:

1. Date对象中,年月日时分秒毫秒的写入和读出

首先我们试着把String对象转换成Date对象,再把Date对象转换回String对象并输出。

//练习:把String转换成Date对象,再把Date对象按原来的格式转换成String输出

	//表示时间的原字符串originalStringWhichShowsTime
	String originalStringWhichShowsTime = "2020年07月22日时间14:25:01.568";
	
	//originalStringWhichShowsTime对应的日期格式dateFormatOfOriginalStringWhichShowsTime
	DateFormat dateFormatOfOriginalStringWhichShowsTime = new SimpleDateFormat("yyyy年MM月dd日时间HH:mm:ss.SSS");
	
	//把字符串按照格式解析成日期
	Date dateOfOriginalStringWhichShowsTime = dateFormatOfOriginalStringWhichShowsTime.parse(originalStringWhichShowsTime);
	
	//把日期按照格式,格式化为字符串
	String newStringWhichShowsTime = dateFormatOfOriginalStringWhichShowsTime.format(dateOfOriginalStringWhichShowsTime);
	System.out.println(newStringWhichShowsTime);

运行结果:

可以看到年、月、日、时、分、秒、毫秒都被成功写入到Date对象中,并且能成功读取出来。

2. Date对象中,星期几的写入和读出

我们稍微把代码改一下,在原字符串中加入星期几,试着把星期几写入Date对象,并重新读出来。
注意,我在原字符串originalStringWhichShowsTime当中
加入了星期三Wed。并且根据原字符串的变化把对应的格式dateFormatOfOriginalStringWhichShowsTime改了

//表示时间的原字符串originalStringWhichShowsTime
	String originalStringWhichShowsTime = "2020年07月22日Wed时间14:25:01.568";
	
	//originalStringWhichShowsTime对应的日期格式dateFormatOfOriginalStringWhichShowsTime
	DateFormat dateFormatOfOriginalStringWhichShowsTime = new SimpleDateFormat("yyyy年MM月dd日EEE时间HH:mm:ss.SSS");
	
	//把字符串按照格式解析成日期
	Date dateOfOriginalStringWhichShowsTime = dateFormatOfOriginalStringWhichShowsTime.parse(originalStringWhichShowsTime);
	
	//把日期按照格式,格式化为字符串
	String newStringWhichShowsTime = dateFormatOfOriginalStringWhichShowsTime.format(dateOfOriginalStringWhichShowsTime);
	System.out.println(newStringWhichShowsTime);

运行结果:

可以看到,出现了解析异常(ParseException)。日期无法解析(Unparseable date)。

基本上可以猜测原因是:星期几无法写入Date对象中。但是这里我有一个疏忽, 中文语言环境下的星期几, 要写成"周一"或"星期一", 写成英文的"Monday"就解析不了. 所以还是要多实践, 实践出真知.

我们再改一下代码:不把星期几写入Date对象,尝试从Date对象中把星期几读取出来。

//表示时间的原字符串originalStringWhichShowsTime
        String originalStringWhichShowsTime = "2020年07月22日时间14:25:01.568";

        //originalStringWhichShowsTime对应的日期格式dateFormatOfOriginalStringWhichShowsTime
        DateFormat dateFormatOfOriginalStringWhichShowsTime = new SimpleDateFormat("yyyy年MM月dd日时间HH:mm:ss.SSS");
        DateFormat dateFormatShowingDayOfTheWeek = new SimpleDateFormat("yyyy年MM月dd日EEE时间HH:mm:ss.SSS");

        //把字符串按照格式解析成日期
        Date dateOfOriginalStringWhichShowsTime = dateFormatOfOriginalStringWhichShowsTime.parse(originalStringWhichShowsTime);

        //把日期按照格式,格式化为字符串
        String newStringWhichShowsTime = dateFormatOfOriginalStringWhichShowsTime.format(dateOfOriginalStringWhichShowsTime);
        String newStringShowingDayOfTheWeek = dateFormatShowingDayOfTheWeek.format(dateOfOriginalStringWhichShowsTime);
        System.out.println(newStringWhichShowsTime);
        System.out.println(newStringShowingDayOfTheWeek);

运行结果:
在这里插入图片描述
可以看到未被写入星期几的Date对象,也可以读取出星期几来。猜测:可能是根据年月日来推算出星期几。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaDateString之间的转换是非常常见的操作,因为不同的应用程序或组件使用的日期格式可能是不同的。因此,开发者需要使用工具来处理它们之间的转换。 下面是一个可用于DateString相互转换Java工具: public class DateUtil { // 将日期转换为字符串 public static String dateToString(Date date, String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.format(date); } // 将字符串转换为日期 public static Date stringToDate(String str, String format) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.parse(str); } } 在上面的代码dateToString方法用于将日期对象转换为字符串,并传入一个特定的日期格式。stringToDate方法用于将字符串转换为日期对象,并同样需要传入日期格式。它们都使用JavaSimpleDateFormat来实现这些转换使用这个工具,可以很方便地将日期对象转换为不同的字符串格式,或将不同格式的字符串转换为日期对象。例如: Date now = new Date(); String nowStr = DateUtil.dateToString(now, "yyyy-MM-dd HH:mm:ss"); System.out.println(nowStr); // 将输出当前时间的字符串表示,格式为"yyyy-MM-dd HH:mm:ss" String str = "2021-01-01 00:00:00"; Date newYear = DateUtil.stringToDate(str, "yyyy-MM-dd HH:mm:ss"); System.out.println(newYear); // 将输出日期对象表示"2021-01-01 00:00:00"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值