java 处理 ISO 8601(RFC 3339)时间格式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
java 处理 ISO 8601(RFC 3339)时间格式
- 前言
- 一、RFC 3339和ISO 8601是什么?
- 二、使用
- 反序列化
- 序列化
- JSR310
- 秒级单位
- Java中的日期\时间类
- Date
- Calendar
- LocalDateTime
- Timestamp
- java8 日期\时间工具类
相关文章导读:
java 时区 mysql 时区:时区在程序和数据库中的作用及其机制
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、RFC 3339和ISO 8601是什么?
RFC3339与ISO8601的区别是前者必需是日期和时间的完整表示。
最值得注意的是RFC 3339需要日期和时间的完整表示(只有小数秒是可选的)。RFC也有一些细微的差别。例如,仅允许使用两位数的截断表示法是不允许的 - RFC 3339需要4位数的年份,RFC只允许使用句点字符作为小数秒的小数点。RFC还允许用空格(或其他字符)替换“T”,而标准只允许将其省略(并且只有在使用表示的各方之间达成一致时)。
具体的差别看下面连接的表格。
https://ijmacd.github.io/rfc3339-iso8601/
二、使用
反序列化
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;import java.io.IOException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;public class TimestampDeserialize extends JsonDeserializer<Timestamp> {@Overridepublic Timestamp deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {String dateStr = p.getValueAsString();DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).appendLiteral("+08:00").toFormatter();LocalDateTime now = LocalDateTime.now();System.out.println(now.format(DateTimeFormatter.BASIC_ISO_DATE));System.out.println(now.format(formatter));LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);Timestamp newTime = Timestamp.valueOf(localDateTime);return newTime;}
}
序列化
@JsonDeserialize(using = TimestampDeserialize.class)private Timestamp createdAt;
JSR310
Java上新的时间日期处理API命名。
秒级单位
Millisecond 毫秒
microsecond 微秒
nanosecond 纳秒
1 秒=1000 毫秒
1 秒=1000000 微秒
1 秒=1000000000 纳秒
Java中的日期\时间类
Date
非多线程安全,精度最多微秒
Calendar
LocalDateTime
有时区,精度最多纳秒
Timestamp
时间戳,没有时区
java8 日期\时间工具类
ZoneId 地区 Asia/Shanghai、Europe/Paris
ZoneOffset 偏移数据 +8:00
Instant 它代表的是时间戳
Duration 它表示秒或纳秒时间间隔
Period 表示一段时间的年、月、日,开使用between()方法获取两个日期之间的差作为Period 对象返回
LocalDate 不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。
LocalTime 它代表的是不含日期的时间
LocalDateTime 它包含了日期及时间,不过还是没有偏移信息或者说时区。
ZonedDateTime 这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。
OffsetDateTime 类实际上包含了LocalDateTime与ZoneOffset
DateTimeFormatter 日期的格式化与解析,与SimpleDateFormat不同,它是不可变且线程安全的
TemporalAdjusters 类中包含许多常用的静态方法,避免自己编写工具类
java 处理 ISO 8601(RFC 3339)时间格式相关推荐
- Java格式化ISO 8601 日期格式
Java格式化ISO 8601 日期格式 public static void main(String[] args) {SimpleDateFormat s = new SimpleDateForm ...
- 【Java】7.5 正则表达式 7.6 Java 8 新增的日期、时间格式器
目录 Pattern类 Matcher类 Java 8 新增的日期.时间格式器 Pattern类 Pattern类的实例是将一个编译好的正则表达式封装起来.因此正则表达式字符串必须先被变异成Patte ...
- iso 8601 php,PHP-使用ISO 8601显示实际时间
我也这样尝试过:echo date(" d M Y H:i:s",strtotime($time)); 但是时间没有显示为已保存在数据库中.它显示出几个小时的差异. 数据库有:20 ...
- Java 利用POI处理Excel的时间格式
问题: 用Java的POI处理Excel中的时间单元格,往往得到的格式不是我们想要的.比如: 按上图中方式设置好后,通过以下代码 XSSFRow row = sheet.getRow(0);Cell ...
- Java ISO 8601时间格式转换
String pattern = "YYYY-MM-dd'T'HH:mm:ss.SSSZZ"; String timeStr=DateFormatUtils.format(new ...
- python 时间戳转iso 8601_python - 如何解析ISO 8601格式的日期?
python - 如何解析ISO 8601格式的日期? 这个问题在这里已有答案: 使用strftime将python datetime转换为epoch ...
- date java 格式化 sss_JAVA时间格式为yyyy-MM-ddTHH:mm:ss.SSS+SSSS转为常用时间格式
简介 本文记录了在JAVA开发工作中遇到了时间格式为: yyyy-MM-ddTHH:mm:ss.SSS+SSSS 转为常用时间格式: yyyy-MM-dd HH:mm:ss 的解决方法,提供给碰到和我 ...
- 时区转换,时间格式转换
基本概念 UT - 世界时 TAI - 国际原子时 GMT - 格林尼治标准时间/格林威治平均时间 UTC - 协调世界时 LT - 本地时间 这篇文章解释的都很详细 一些时间的概念与区分(UTC.G ...
- 日期时间格式转化为方便理解的格式
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** @auth ...
最新文章
- 实战:使用Mask-RCNN的停车位检测
- 【django轻量级框架】云端系统之Django框架
- 与mysql的零距离接触_与MySQL的零距离接触
- 我们都是和自己赛跑的人
- html用css画多边形,Sass绘制多边形_Preprocessor, Sass, SCSS, clip-path, CSS处理器, 会员专栏 教程_W3cplus...
- Mysqli面向对象操作数据库
- python迭代器与生成器答案_史上最全 Python 迭代器与生成器
- 中国大学慕课python答案第七章_中国大学慕课mooc用Python玩转数据章节答案
- 支持蓝牙的模拟器_PM 2032电池模拟器展会现场演示
- 理解浏览器和nodeJs中的事件循环(Event Loop)
- [python]python 动态调用模块类方法
- 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
- (转)DPDK内存管理 02 -----初始化
- 【毕业季】一个普通大二学生的迷茫与展望
- ESP32 EC11 制作电脑音量调节旋钮
- 推荐系统中的图形注意协同相似度嵌入
- 删除:大数据取舍之道 - 电子书下载(高清版PDF格式+EPUB格式)
- 要点回顾|10 月 Pulsar 中文开发者与用户组会议
- .NET AutoCAD二次开发之路(二、直线篇)
- Windows之使用批处理创建快捷方式到桌面(符号链接)