我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java String、Date、Calendar、LocalDate和LocalDateTime互转

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java String、Date、Calendar、LocalDate和LocalDateTime互转

目录

一、String和Date互转

1.1 String时间转为Date

1.2 Date转为String

二、String和Calendar互转

2.1 String时间转为Calendar

2.2 Calendar转为String

三、String和LocalDate(LocalDateTime)互转

3.1 String时间转为LocalDate(LocalDateTime)

3.2 LocalDate(LocalDateTime)转为String

四、Date和Calendar互转

4.1 Date转为Calendar

4.2 Calendar转为Date

五、Date和LocalDate(LocalDateTime)互转

5.1 Date转为LocalDate(LocalDateTime)

5.2 LocalDate(LocalDateTime)转为Date

六、Calendar和LocalDat(LocalDateTime)互转

6.1 Calendar转为LocalDate(LocalDateTime)

6.2 LocalDat(LocalDateTime)转为Calendar

七、LocalDate和LocalDateTime互转

7.1 LocalDate转LocalDateTime

7.2 LocalDateTime转LocalDate


一、String和Date互转

1.1 String时间转为Date
private Date stringToDate(String dateStr, String pattern) {    try {        return new SimpleDateFormat(pattern).parse(dateStr);    } catch (Throwable ignore) {        // TODO 时间转换异常日期    }    return null;}

调方法 stringToDate(Sring, pattern):

System.out.println(stringToDate("2023-11", "yyyy-MM"));System.out.println(stringToDate("2023-11-11", "yyyy-MM-dd"));System.out.println(stringToDate("2023-11-11 11", "yyyy-MM-dd hh"));System.out.println(stringToDate("2023-11-11 11:11", "yyyy-MM-dd hh:mm"));System.out.println(stringToDate("2023-11-11 11:11:11", "yyyy-MM-dd hh:mm:ss"));

注:第一个参数的格式必须与第二个参数的模式一致才能正常转换

运行结果:

Wed Nov 01 00:00:00 CST 2023Sat Nov 11 00:00:00 CST 2023Sat Nov 11 11:00:00 CST 2023Sat Nov 11 11:11:00 CST 2023Sat Nov 11 11:11:11 CST 2023
1.2 Date转为String
private String dateToString(Date date, String pattern) {    return new SimpleDateFormat(pattern).format(date);}

调方法dateToString(Date, pattern),可根据第二个参数模式来获取对应模式的时间对应字符串格式:

System.out.println(dateToString(new Date(), "yyyy"));System.out.println(dateToString(new Date(), "yyyy-MM"));System.out.println(dateToString(new Date(), "yyyy-MM-dd"));System.out.println(dateToString(new Date(), "yyyy-MM-dd hh"));System.out.println(dateToString(new Date(), "yyyy-MM-dd hh:mm"));System.out.println(dateToString(new Date(), "yyyy-MM-dd hh:mm:ss"));

运行结果:

20232023-082023-08-012023-08-01 112023-08-01 11:402023-08-01 11:40:26

二、String和Calendar互转

2.1 String时间转为Calendar
private Calendar stringToCalendar(String dateStr, String pattern) {    try {        SimpleDateFormat sdf= new SimpleDateFormat(pattern);        Date date = sdf.parse(dateStr);        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        return calendar;    } catch (Throwable ignore) {        // TODO 时间字符串转Calendar异常    }    return null;}

调用方法stringToCalendar(String, pattern):

Calendar calendar0 = stringToCalendar("2023-08-05", "yyyy");Calendar calendar1 = stringToCalendar("2023-08-05", "yyyy-MM");Calendar calendar2 = stringToCalendar("2023-08-05 11:11:11", "yyyy-MM-dd hh:mm:ss");System.out.println(calendar0.getTime());System.out.println(calendar1.getTime());System.out.println(calendar2.getTime());

注:第一个参数的格式与第二个参数的模式不一定要求强一致,但若String只有年月日,模式不能有时分秒

运行结果:

Sun Jan 01 00:00:00 CST 2023Tue Aug 01 00:00:00 CST 2023Sat Aug 05 11:11:11 CST 2023

说明:根据日期模式格式化时间对象时,若模式只有年月则日为1号,若模式没有年份则月日为01月01日,模式没有时/分/秒 则为0

2.2 Calendar转为String
private String calendarToString(Calendar calendar, final String pattern) {    SimpleDateFormat sdf = new SimpleDateFormat(pattern);    return sdf.format(calendar.getTime());}

调用方法calendarToString(Calendar, pattern),第二个参数为输出的格式模式:

System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM"));System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd"));System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd hh"));System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd hh:mm"));System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd hh:mm:ss"));

运行结果:

2023-082023-08-012023-08-01 112023-08-01 11:592023-08-01 11:59:13

三、String和LocalDate(LocalDateTime)互转

3.1 String时间转为LocalDate(LocalDateTime)
private LocalDate stringToLocalDate(String dateStr, String pattern) {    DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern);    return LocalDate.parse(dateStr, df);}private LocalDateTime stringToLocalDateTime(String dateStr, String pattern) {    DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern);    return LocalDateTime.parse(dateStr, df);}

调方法 stringToLocalDate(Sring, pattern),第二个参数模式必须有年月日,第一个参数的格式必须与第二个参数的模式一致才能正常转换

System.out.println(stringToLocalDate("2023-08-01", "yyyy-MM-dd"));System.out.println(stringToLocalDate("2023-08-02 11", "yyyy-MM-dd hh"));System.out.println(stringToLocalDate("2023-08-02 11:12", "yyyy-MM-dd hh:mm"));System.out.println(stringToLocalDate("2023-08-02 11:12:13", "yyyy-MM-dd hh:mm:ss"));System.out.println(stringToLocalDateTime("2023-08-02 11:12:13", "yyyy-MM-dd hh:mm:ss"));

运行结果:

2023-08-012023-08-022023-08-022023-08-02java.time.format.DateTimeParseException: Text '2023-08-02 11:12:13' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MinuteOfHour=12, SecondOfMinute=13, MilliOfSecond=0, MicroOfSecond=0, HourOfAmPm=11, NanoOfSecond=0},ISO resolved to 2023-08-02 of type java.time.format.Parsed

注:报错的原因是stringToLocalDateTime方法第二个参数模式的小时hh 采用12小时,反解析时不知道上午还是下午,改成24小时制“yyyy-MM-dd HH:mm:ss”即可。

3.2 LocalDate(LocalDateTime)转为String
private String localDateToString(LocalDate localDate, String pattern) {    return localDate.format(DateTimeFormatter.ofPattern(pattern));}private String localDateToString(LocalDateTime localDateTime, String pattern) {    return localDateTime.format(DateTimeFormatter.ofPattern(pattern));}

只需要年月日用LocalDate,若需要时分秒用LocalDateTime

调方法localDateToString:

System.out.println(localDateToString(LocalDate.now(), "yyyy"));System.out.println(localDateToString(LocalDate.now(), "yyyy-MM"));System.out.println(localDateToString(LocalDate.now(), "yyyy-MM-dd"));System.out.println(localDateToString(LocalDateTime.now(), "yyyy-MM-dd HH"));System.out.println(localDateToString(LocalDateTime.now(), "yyyy-MM-dd HH:mm"));System.out.println(localDateToString(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));

运行结果:

20232023-082023-08-012023-08-01 122023-08-01 12:032023-08-01 12:03:44

四、Date和Calendar互转

4.1 Date转为Calendar
private Calendar dateToCalendar(Date date) {    Calendar cal = Calendar.getInstance();    cal.setTime(date );    return cal;}

调方法dateToCalendar(Date):

Calendar calendar = dateToCalendar(new Date());System.out.println(calendar.getTime());

运行结果:

Tue Aug 01 12:08:41 CST 2023
4.2 Calendar转为Date
private Date calendarToDate(Calendar calendar) {    return calendar.getTime();}

调方法calendarToDate(Calendar):

System.out.println(calendarToDate(Calendar.getInstance()));

运行结果:

Tue Aug 01 12:10:21 CST 2023

五、Date和LocalDate(LocalDateTime)互转

5.1 Date转为LocalDate(LocalDateTime)
private LocalDate dateToLocalDate(Date date) {    // 将java.util.Date转换为ZonedDateTime。    Instant instant = date.toInstant();    ZoneId zoneId = ZoneId.systemDefault();    ZonedDateTime zonedDateTime = instant.atZone(zoneId);    // 使用它的toLocalDate()方法从ZonedDateTime获取LocalDate    return zonedDateTime.toLocalDate();}private LocalDateTime dateToLocalDateTime(Date date) {    // 将Date对象转换成为Instant对象    Instant instant = date.toInstant();    // 将瞬时对象转换成为LocalDateTime对象    return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());}

调dateToLocalDate(Date),转LocalDateTime调dateToLocalDateTime(Date):

System.out.println(dateToLocalDate(new Date()));System.out.println(dateToLocalDateTime(new Date()));

运行结果:

2023-08-012023-08-01T12:22:39.742
5.2 LocalDate(LocalDateTime)转为Date
private Date localDateToDate(LocalDate localDate) {    ZoneId zoneId = ZoneId.systemDefault();    ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId);    // 将时区对象转换成为瞬时对象    Instant instant2 = zonedDateTime.toInstant();    // 通过Date提供的静态方法将瞬时对象转换为Date对象    return Date.from(instant2);}private Date localDateTimeToDate(LocalDateTime localDateTime) {    // 将LocalDateTime对象转换成为时区对象    ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());    // 将时区对象转换成为瞬时对象    Instant instant2 = zonedDateTime.toInstant();    // 通过Date提供的静态方法将瞬时对象转换为Date对象    return Date.from(instant2);}

LocalDateTime调localDateTimeToDate(LocalDateTime ),LocalDate调localDateToDate(LocalDate ):

System.out.println(localDateToDate(LocalDate.now()));System.out.println(localDateTimeToDate(LocalDateTime.now()));

运行结果:

Tue Aug 01 00:00:00 CST 2023Tue Aug 01 12:25:06 CST 2023

六、Calendar和LocalDat(LocalDateTime)互转

6.1 Calendar转为LocalDate(LocalDateTime)

调4.2由Calendar转为Date,再调5.1转为LocalDate/LocalDateTime:

System.out.println(dateToLocalDate(calendarToDate(Calendar.getInstance())));System.out.println(dateToLocalDateTime(calendarToDate(Calendar.getInstance())));

运行结果:

2023-08-012023-08-01T12:33:01.151
6.2 LocalDat(LocalDateTime)转为Calendar

调5.2由LocalDate转为Date,再调4.1转为Calendar:

Calendar calendar1 = dateToCalendar(localDateToDate(LocalDate.now()));Calendar calendar2 = dateToCalendar(localDateTimeToDate(LocalDateTime.now()));System.out.println(calendar1.getTime());System.out.println(calendar2.getTime());

运行结果:

Tue Aug 01 00:00:00 CST 2023Tue Aug 01 12:35:47 CST 2023

七、LocalDate和LocalDateTime互转

7.1 LocalDate转LocalDateTime
private LocalDateTime localDateToLocalDateTime(LocalDate localDate) {    return dateToLocalDateTime(localDateToDate(localDate));}
7.2 LocalDateTime转LocalDate
private LocalDate localDateTimeToLocalDate(LocalDateTime localDateTime) {    return localDateTime.toLocalDate();}

调7.1和7.2:

System.out.println(localDateToLocalDateTime(LocalDate.now()));System.out.println(localDateTimeToLocalDate(LocalDateTime.now()));

运行结果:

2023-08-01T00:002023-08-01

注:String为java.lang.String,Date为java.util.Date,Calendar为java.util.Calendar,LocalDate为java.time.LocalDate,LocalDateTime为java.time.LocalDateTime。

来源地址:https://blog.csdn.net/imwucx/article/details/132037774

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java String、Date、Calendar、LocalDate和LocalDateTime互转

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

String类型和Date类型相互转换(java)

** String类型和Date类型怎样相互转换? ** 1、format方法可以把Date类型转换成特定格式的String类型,如果Date类型和定义的SimpleDateFormat长度不一致会自动在后面补充0 //自定义需要输出的St
2023-08-23

【Java基础教程】(三十七)常用类库篇 · 第七讲:日期时间处理类——三万字全面讲解 LocalDateTime和 DateTimeFormatter,Date、Calendar ~

Java基础教程之常用类库 ·日期时间处理类 1️⃣ 概念🔍 时间日期及处理类汇总 2️⃣ 优势和缺点3️⃣ 使用3.1 各时间日期类使用案例3.2 各时间日期处理类使用案例3.3 Date 类3.4 Ca
2023-08-16

Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等

博客背景是Java开发。json相关的转换、取值等在日常开发中经常使用,但有时候还是会忘记or遇到些奇奇怪怪的问题。以此记录,提醒自己~不定期更新~ 文章目录 1、JSONObject相关实体类和JSONObject互转Map和JS
2023-08-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录