【Calendar】Calendar中Date和String类型时间转换

本文介绍如何使用Java进行日期和时间的格式转换,包括从Date类型转换到String类型及反向转换的方法,并详细解释了可能遇到的错误及其原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题:

时间格式如何处理?

2.源代码:

public class TestDemo {
    public static void main(String[] args){

        System.out.println("1.将Date转化成String格式::");
        Calendar calendar=Calendar.getInstance();/*建立一个日历,时间默认为当前系统时间*/
        System.out.println("Date类时间:"+calendar);
        String date1 = DateUtil.formatDateToString(calendar.getTime(), "yyyy-MM-dd HH:mm");/*将时间按"yyyy-MM-dd HH:mm"格式化*/
        System.out.println("String类时间:"+date1);
        System.out.println();
        System.out.println("2.将String转化成Date格式:");

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

        try {
            /*将String类型的时间date1,转化成Date格式*/
           Date date2 = sdf.parse(date1);
            System.out.println("Date类型时间:"+date2);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

3.截图:

a、Date类时间转String类型时间:
这里写图片描述
b、String类型时间转换成Date格式:
这里写图片描述

4.总结:

a、第一步:
告诉系统你的String的时间,是形如哪种格式的;
这里String转Date格式,是非常容易出错的,因为这里的String格式,必须要是要是形如‘2017-6-21’或者加上时间的‘2017年6月21日11:08’这种格式,具体哪种格式,你要在前面声明一个SimpleDateFormat来告诉系统,这样他才会按照你的格式,给你拆分;

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd");
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");

这里写图片描述

b、第二步:
解析String类型的时间;
这里会报错,如果给你的不是形如yyyy-MM-dd,如果是随便的一个字符串,或者是解析的SimpleDateFormat不一致,就会报错:
这里写图片描述

这是为什么?
这里写图片描述
因为如果你传入的是String类型时间,要解析成Date格式;

如果②的类型比①精确,就会报错:“Unparseable date”;
①String:“yyyy-MM-dd”
②SimpleDateFormat:“yyyy-MM-dd HH:mm:ss”;

如果是①的格式比②精确,就没有问题;
①String:“yyyy-MM-dd HH:mm:ss”
②SimpleDateFormat:“yyyy-MM-dd”;
但是,系统会自动把你没有的部分默认为0;这里图中11:22就变成11:00了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值