gpt4 book ai didi

java - 从字符串转换为日期时间

转载 作者:行者123 更新时间:2023-11-30 10:55:56 27 4
gpt4 key购买 nike

我想将不同形式的 String 转换为 Date 格式。这是我当前的代码:

    SimpleDateFormat sdf =  new SimpleDateFormat("hhmma"); 
Date time = sdf.parse(string);

对其进行测试,它将正确解析诸如 1030pm 之类的输入。但是,它不适用于像 830pm 或任何其他个位数小时这样的输入。有没有办法解决?还是我必须为不同的 String 长度设置不同的 DateFormat ("hmma")

最佳答案

java.time

您显然有一个没有任何日期的时间。 java.util.Date 类,尽管它的名称选择不当,但它同时表示日期时间。

在 Java 8 及更高版本中,内置 java.time框架 ( Tutorial ) 提供了一个名为 LocalTime 的时间类.正是您需要的时间值。

如果小时可能没有填充前导零,但分钟会有,那么我建议在输入字符串的长度较短时简单地在前面加上一个零。

String input = "834AM";
String s = null;
switch ( input.length () ) {
case 6:
s = input;
break;
case 5:
// Prepend a padded leading zero.
s = "0" + input;
break;
default:
// FIXME: Handle error condition. Unexpected input.
break;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "hhmma" );
LocalTime localTime = formatter.parse ( s , LocalTime :: from );

System.out.println ( "Input: " + input + " → s: " + s + " → localTime: " + localTime );

运行时。

Input: 834AM → s: 0834AM → localTime: 08:34

另一方面,如果小于 10 的分钟数将是没有填充前导零的单个数字,我没有解决方案。在我看来,这将是不可能的模棱两可的。例如,123AM 是指 01:23AM 还是 12:03AM


提示:坚持使用 ISO 8601格式,特别是 24 小时制和前导零。

关于java - 从字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33168597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com