如何将时间字符串值转换为日期格式

Posted

技术标签:

【中文标题】如何将时间字符串值转换为日期格式【英文标题】:How to convert time string value in date format 【发布时间】:2018-03-13 03:30:03 【问题描述】:

我面临的问题是,我有一个数据表,其中有一个字符串值,如 123459,这是一个时间,我还有另一列,我在其中添加值加上 5 秒。 当我添加值时,它的添加为 123464 而不是 123504。 谁能帮我解决这个问题?

【问题讨论】:

Parse clock time in java 8 的可能重复项。或How to format a double value as time。 我没有投反对票。如果您想知道否决票和关闭投票,我怀疑它们是因为您没有表现出任何搜索和研究工作,也没有尝试自己解决您的问题。你应该这样做。它通常为我们提供了一个更好的起点来帮助您,所以这对您自己有利。 【参考方案1】:

使用 Java 8 及更高版本中内置的 java.time 类。见Oracle Tutorial。

具体来说,LocalTimeDateTimeFormatter 类。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HHmmss");
LocalTime localTime = LocalTime.parse("123459", formatter);

LocalTime timeIn5Seconds = localTime.plusSeconds(5);
System.out.println(timeIn5Seconds.format(formatter));

输出

123504

【讨论】:

【参考方案2】:

将字符串转换为日期格式...

DateFormat formatter = new SimpleDateFormat("hh:mm:ss a");

Date date = (Date)formatter.parse(str);

增加 5 秒

Calendar cal = Calendar.getInstance(); // creates calendar
cal.setTime(date); // sets calendar time/date according to the OBJECT

cal.add(Calendar.SECOND, 5); // adds 5 SECONDS
cal.getTime();

【讨论】:

仅供参考,麻烦的旧日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 8 和 Java 中内置的 java.time 类所取代9. 见Tutorial by Oracle。 请不要教年轻人使用SimpleDateFormat类。它不仅过时已久(与Calendardate 一样),而且还出了名的麻烦。而今天我们在java.time, the modern Java date and time API 的表现要好得多。

以上是关于如何将时间字符串值转换为日期格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期转换为字符串格式。? [复制]

如何将所有日期格式转换为日期列的时间戳?

将具有日期和纪元格式值的字符串列转换为 postgresql/Tableau prep 中的日期列

字符串值到日期格式的液体转换

java中如何将字符串转换成日期型

java字符串转换成日期