Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日期格式转换

日期格式转换

作者头像
栖西
发布于 2023-10-17 00:17:49
发布于 2023-10-17 00:17:49
65400
代码可运行
举报
文章被收录于专栏:栖西栖西
运行总次数:0
代码可运行

SimpleDateFormat使用

没有人见过风的模样,每当树枝摇曳,水波涟漪或浮云飘过,我们才知道风一直都在从未离开!

1、Date转String

先设置要转换的日期,在格式化

使用格式: sdf.format(date);

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Date 转 String
@Test
public void DateToString(){
    Date date = new Date();
    System.out.println(date);  //Mon Mar 29 18:20:58 CST 2021
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
    System.out.println(sdf.format(date));  //2021-03-29 18:20:58
}

效果:

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void Test2()  {
    SimpleDateFormat sdf = new SimpleDateFormat("今年 yyyy 年 今天是一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中第 k 时 属于 z时区");
    Date date = new Date();
    System.out.println(sdf.format(date));
}

效果:

有个偷懒的写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DateFormat.getDateTimeInstance().format(new Date())   // 格式  年-月-日 时:分:秒

2、String转Date

设置日期格式,设置要转化的字符串,使用:格式.parse(字符串)转化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void StringToDate() throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = "2021-03-29 19:15:22";
    Date date = format.parse(str);
    System.out.println(date);//Mon Mar 29 19:15:22 CST 2021
}

效果:

指定日期

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 Date parse = simpleDateFormat.parse("1999-05-03 12:13:14"); // 转为时间类型
 String format = simpleDateFormat.format(parse);  // 又转为字符串了

3、字符代表含义

常用:yyyy-MM-dd HH:mm:ss 年月日 时分秒

SimpleDateFormat函数转化标志

G     年代标志符 公元 y       年 M     月 d      日 h      时 在上午或下午 (1~12) H     时 在一天中 (0~23) m    分 s      秒 S     毫秒 E     今天是星期几 D    一年中的第多少天 F     一月中第几个星期几 W     一月中第几个星期 w     一年中第几个星期

a    上午 / 下午 标记符 k     时 在一天中 (1~24) K     时 在上午或下午 (0~11) z     时区

4、数据库字段和Java字段对应关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   JDBCType            JavaType
    CHAR                String
    VARCHAR             String
    LONGVARCHAR         String
    NUMERIC             java.math.BigDecimal
    DECIMAL             java.math.BigDecimal
    BIT                 boolean
    BOOLEAN             boolean
    TINYINT             byte
    SMALLINT            short
    INTEGER             int
    BIGINT              long
    REAL                float
    FLOAT               double
    DOUBLE              double
    BINARY              byte[]
    VARBINARY           byte[]
    LONGVARBINARY               byte[]
    DATE                java.sql.Date
    TIME                java.sql.Time
    TIMESTAMP           java.sql.Timestamp
    CLOB                Clob
    BLOB                Blob
    ARRAY               Array
    DISTINCT            mapping of underlying type
    STRUCT              Struct
    REF                 Ref
    DATALINK            java.net.URL[color=red][/color]

5、时区

GMT、UTC、DST、CST时区代表的意义

GMT:Greenwich Mean Time

格林威治标准时间,地球每15°(经度)被分为一个时区,共二十四个时区,相邻时区时差一小时,北京为东八区。

UTC:Universal Time Coordinated

世界协调时间,又称世界统一时间(世界标准时间)。

中国时间比GMT快8小时(中国时间与UTC的时差为+8,也就是UTC+8)。

DST:Daylight Saving Time

夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时。

CST:四个不同时区的缩写

CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Central Standard Time (USA) UT-6:00        美国标准时间
Central Standard Time (Australia) UT+9:30  澳大利亚标准时间
China Standard Time UT+8:00     中国标准时间
Cuba Standard Time UT-4:00      古巴标准时间

时间戳:1970年1月1日 00:00:00到现在所经历的秒数,与时区没有关系

JavaScript与Java输出的区别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Java 获取的CST时间用的是China Standard Time.
而客户端JavaScript则默认采用的GMT时间。

例如:JavaScript里面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		   <script  language ="javascript" >
			  var myDate=new Date();
			  document.write("当前时间:",myDate);
		   </script>
	</body>
</html>

在Java中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void DateToString(){
    Date date = new Date();
    System.out.println(date); 
}

效果对比:

日期格式输出1616947200000转2021-04-03 数据库字段类型为datetime 相对于的实体类字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") //可不写
private Date entrytime;

Calendar的使用

1、用法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
先实例化
Calendar calendar =Calendar.getInstance();

指定日历时间
set(int year ,int month,int date)     
set(int year ,int month,int date,int hour,int minute)     
set(int year ,int month,int date,int hour,int minute,int second)     

指定现在的时间
calendar.setTime(new Date());

要获取年月日等信息,使用get
示例:    calendar.get(Calendar.YEAR)
calendar.get(Calendar.MONTH)+1     获取月份,默认从0开始,所以+1
calendar.get(Calendar.DAY_OF_MONTH)    几号,等同于下面的DATE
calendar.get(Calendar.DATE)
calendar.get(Calendar.DAY_OF_WEEK)-1    星期几 周日的返回值是 1
calendar.get(Calendar.DAY_OF_YEAR)      指定日期是当年的第多少天

对日期进行加减
calendar.add(Calendar.DATE,-1);  // 往前推一天
calendar.add(Calendar.MONTH,-1); // 往前推一个月
calendar.add(Calendar.YEAR,5); // 往后加5年 2026

日期转时间
simpleDateFormat.format(calendar.getTime())

2、测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void testCalendar() throws ParseException {
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date parse = simpleDateFormat.parse("2021-01-02");
    calendar.setTime(parse);
    System.out.println(simpleDateFormat.format(calendar.getTime()));
    calendar.add(Calendar.DATE,-6);
    System.out.println(calendar.get(Calendar.YEAR)+"-"+String.valueOf(calendar.get(Calendar.MONTH)+1)+"-"+calendar.get(Calendar.DAY_OF_MONTH));
    System.out.println(simpleDateFormat.format(calendar.getTime())); // 2019-12-27 同上
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java日期处理易踩的十个坑
  我们设置了10小时,但运行结果是22点,而不是10点。因为Calendar.HOUR默认是按12小时制处理的,需要使用Calendar.HOUR_OF_DAY,因为它才是按24小时处理的。
不会飞的小鸟
2020/03/29
1.5K0
Java常见日期格式及日期的计算工具类
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List;
一头小山猪
2020/06/15
4.4K0
一文带你入坑JDK8的新日期时间类 LocalDate、LocalTime、LocalDateTime
参考 https://blog.csdn.net/duan196_118/article/details/111597682 https://blog.csdn.net/qq_24754061/article/details/95500209 https://xijia.blog.csdn.net/article/details/106007147
时间静止不是简史
2023/02/23
4.8K0
一文带你入坑JDK8的新日期时间类 LocalDate、LocalTime、LocalDateTime
Java对Mysql数据库时间格式处理
博主在做一个列表的时候从MongoDB中查出来的数据包含有时间格式,在MongoDB数据库中的存放形式为2017-10-24 05:18:54.000Z,而对于使用Java查询是String接受的值为Tue Oct 24 13:18:54 CST 2017。
青衫染红尘
2021/01/19
4.9K0
关于时间的那些事 - 中国也曾实行过夏令时,你知道吗?
大家都知道,地球上按照经度分成24个时区,每个时区相差一个小时。一般来说每个国家法定的时间都对应一个时区,比如中国用的东八区时间,韩国用的东九区时间,韩国时间比中国快一个小时。同时,很多高纬度国家都实行夏令时,即每到夏天把时钟拨快一个小时,每到冬天再把时钟拨慢一个小时,比如德国。
Bruce Li
2019/07/30
1.5K0
关于时间的那些事 - 中国也曾实行过夏令时,你知道吗?
Java基础系列之日期时间处理
林老师带你学编程
2018/01/03
9360
Java 相关时间工具类
package com.cavytech.wear2.util; import android.text.TextUtils; import android.text.format.Time; import android.util.Log; import com.cavytech.wear2.entity.BandSleepStepBean; import com.cavytech.wear2.entity.GetSleepBean; import java.text.DateFormat;
先知先觉
2019/01/21
1.5K0
Java 中的时间日期 API
自从 14 年发布 Java 8 以后,我们古老 java.util.Date 终于不再是我们 Java 里操作日期时间的唯一的选择。 其实 Java 里的日期时间的相关 API 一直为世猿诟病,不仅在于它设计分上工不明确,往往一个类既能处理日期又能处理时间,很混乱,还在于某些年月日期的数值映射存储反人类,例如:0 对应月份一月,11 对应月份十二月,118 对应年份 2018(1900 + 118)等。 往往我们得到某个年月值还需要再做相应的运算才能得到准确的年月日信息,直到我们的 Java 8 ,借鉴了
Single
2018/05/15
2.3K0
Java日期格式化
文章目录 1. 日期格式化 1.1. 前言 1.2. Date 1.2.1. 构造方法 1.2.2. 常用的方法 1.2.3. 实例 1.3. SimpleDateFormat 1.3.1. 构造方法 1.3.2. 常用的方法 1.3.3. 常用的日期格式化的模板 1.3.4. 实例 1.4. Calendar 1.4.1. 创建对象 1.4.2. 常用方法 1.4.3. 实例 日期格式化 前言 更多文章请看本人博客https://chenjiabing666.github.io/ 版权所有,如需转
爱撒谎的男孩
2019/12/31
2.7K0
java实用类(四)-Date 和 Calendar
创建日历类对象,不是new出来的,而是通过日历类自带的静态方法getInstance,获取;
化羽羽
2022/10/28
4820
java实现时间转UTC格式
协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps
用户7741497
2022/03/27
4.6K0
java 日期格式化工具类
六月的雨在Tencent
2024/03/28
1220
java中经常使用的日期格式化(全)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115600.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/10
2.1K0
(32) 剖析日期和时间 / 计算机程序的思维逻辑
本节和下节,我们讨论在Java中如何进行日期和时间相关的操作。 日期和时间是一个比较复杂的概念,Java API中对它的支持不是特别好,有一个第三方的类库反而特别受欢迎,这个类库是Joda-Time,Java 1.8受Joda-Time影响,重新设计了日期和时间API,新增了一个包java.time。 虽然之前的设计有一些不足,但Java API依然是被大量使用的,本节介绍Java 1.8之前API中对日期和时间的支持,下节介绍Joda-Time,Java 1.8中的新API与Joda-Time比较类似,暂
swiftma
2018/01/31
2.1K0
日历时间格式Date与Calender
一、Date 1.1.概述 获取当前系统时间 大部分构造方法已经过时 构造方法 Date(); 创建一个Date,对应当前时间,精度在毫秒值 Date(long date); 根据时间戳毫秒数,创建对应的Date对象,时间戳是从1970-01-01 00:00:00 GMT tips: 中国采用的东八区时间 1970-01-01 08:00:00 常用方法: long getTime(); 通过Date类对象获取对应当前时间的毫秒数 System.currentTi
2020/10/23
1.1K0
Java 时间格式化(java中如何格式化一个日期)
1、通过MessageFormat转化 String dateTime = MessageFormat.format(“{0,date,yyyy-MM-dd-HH-mm:ss:ms}” , new Object[] { new java.sql.Date(System.currentTimeMillis()) }); 说明: yyyy-MM-dd-HH-mm:ss:ms 年yyyy 月MM 日dd 时(大写为24进制,小写为12进制) 分mm 秒ss 微妙ms
全栈程序员站长
2022/08/01
6.5K0
Java 时间格式化(java中如何格式化一个日期)
深入理解Java常用类-----时间日期
本文主要介绍了Java中的日期和时间操作,包括使用Date、Calendar、DateFormat、Time以及线程安全的Calendar等类。同时,还介绍了Joda-Time库,该库提供了更先进的日期和时间操作类。通过这些技术,我们可以方便地进行日期和时间的读取、计算、操作和格式化等操作。
Single
2018/01/04
1.3K0
深入理解Java常用类-----时间日期
Java 常用类
记录一些Java 学习使用, 经常使用类进行总结… 这个文章感觉还是很有必要的 后面会常总结扩展…
Java_慈祥
2024/08/06
1010
Java 常用类
LocalDateTime、Date时间工具类
参考:Date、LocalTime、LocalDate、LocalDate-时间操作工具类_Hatsune_Miku_的博客-CSDN博客
CBeann
2023/12/25
2910
Java 时间处理 & JDK1.8 新特性
Java 处理时间 一般通过 Date、Calendar 获取 之后 进行 DateFormat、SimpleDateFormat 等 格式转换类 进行处理。
收心
2022/01/17
8970
相关推荐
Java日期处理易踩的十个坑
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验