java - OffsetDateTime toString() 返回不同格式的日期字符串
问题描述
我有这种格式的日期yyyy-MM-dd'T'HH:mm:ss'Z'
,但是当我使用OffsetDateTime.parse(date);
它解析它时,它会通过消除返回字符串seconds
逻辑:从日期获取日期,如果是,Saturday
或者Sunday
将日期更改为星期一并返回日期字符串
String date = "2018-12-30T06:00:00Z";
System.out.println(date);
try {
OffsetDateTime dateTime = OffsetDateTime.parse(date);
System.out.println(dateTime); //2018-12-30T06:00Z
DayOfWeek day = dateTime.getDayOfWeek();
// check if price change date is Sunday or Saturday and change it to Monday
if (day.equals(DayOfWeek.SATURDAY) || day.equals(DayOfWeek.SUNDAY)) {
String finalDateTime = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY)).toString();
System.out.println(finalDateTime); //2018-12-31T06:00Z
}else {
System.out.println(date);
}
}catch(Exception ex) {
System.out.println(ex);
System.out.println(date);
}
我需要以相同的输入格式返回字符串yyyy-MM-dd'T'HH:mm:ss'Z'
解决方案
根据OffsetDateTime.toString()
方法 javadoc,使用值的最短可能格式,而省略的部分暗示为零。最短的可能格式2018-12-30T06:00:00Z
是uuuu-MM-dd'T'HH:mmXXXXX
秒和纳秒被跳过:
输出将是以下 ISO-8601 格式之一:
- uuuu-MM-dd'T'HH:mmXXXXXX
- uuuu-MM-dd'T'HH:mm:ssXXXXX
- uuuu-MM-dd'T'HH:mm:ss.SSSXXXXXX
- uuuu-MM-dd'T'HH:mm:ss.SSSSSSXXXXXX
- uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSSXXXXX
使用的格式将是最短的输出时间的完整值,其中省略的部分被暗示为零。
如果您需要精确的格式,请使用DateTimeFormatter
具有特定模式的实例来输出日期:
String date = "2018-12-30T06:00:00Z";
OffsetDateTime dt = OffsetDateTime.parse(date);
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
System.out.println(fmt.format(dt));
推荐阅读
- python - 读取文件的下一行以确定是否打印当前行
- kubernetes - 在控制平面中控制 pod kubelet 与控制器
- python - 进程使用线程池和 cv2 增加内存
- jquery - 为什么当光标在顶部时,悬停时出现的div开始闪烁?
- python - 你如何让用户输入“DONE”结束程序并说出在 python 中有多少问题是对的和错的?
- reactjs - 使用 .map 并收到警告:道具类型失败:道具 `to` 在 `Link` 中标记为必需,但其值为 `undefined`
- c# - 如何检查输入的数据是否在表格中?
- excel - 如何删除超过一个月的工作表?
- python - 合并重复值并汇总字典列表中的总数
- python - 如何基于单元格中的多行跨每一行创建多个熊猫数据框列?