将未知日期格式的字符串表示形式转换为 java 中的日期
converting string representation of unknown date-format to Date in java
我有一个代表日期的字符串。 我不知道字符串的日期格式。但仅作为示例,它可能是
中的任何一个
- 2015-10-14T16:41:42.000Z
- 2015-10-14T19:01:53.100+01:00
- 2015-10-1405:20:29
或网站可用于在元标记中描述日期的任何有效格式(因此格式将是官方的,而不是异想天开,但可能性不小)。
我可以使用joda-time来解决这个问题吗? java.util.Date
或其他怎么样?
更新
我想我找到了一个 Java与我正在寻找的脚本等价的脚本
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
但是我需要Java的答案。
嗯,这不是真正的 "java" 解决方案,但如果您找到 Javascript 解决方案,那么您可以使用 java 中的 Javascript 解决方案,使用ScriptEngine.
只是有点快和肮脏......:)
这里有一个示例代码:
public static void main(String[] args) throws ScriptException, ParseException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String[] dateStrings = new String[] {
"2015-10-14T16:41:42.000Z",
"2015-10-14T19:01:53.100+01:00",
"2015-10-14 05:20:29" };
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
for (String d : dateStrings) {
String script = "new Date('" + d + "')";
Object eval = engine.eval(script);
Date parsed = sdf.parse(eval.toString().replace("[Date ", "").replace("]", ""));
System.out.println(eval + " -> " + parsed);
}
}
打印出:
[Date 2015-10-14T16:41:42.000Z] -> Wed Oct 14 18:41:42 CEST 2015
[Date 2015-10-14T18:01:53.100Z] -> Wed Oct 14 20:01:53 CEST 2015
[Date 2015-10-14T03:20:29.000Z] -> Wed Oct 14 05:20:29 CEST 2015
eval.toString() 部分可以明显改进。作为区域设置...
我有一个代表日期的字符串。 我不知道字符串的日期格式。但仅作为示例,它可能是
中的任何一个- 2015-10-14T16:41:42.000Z
- 2015-10-14T19:01:53.100+01:00
- 2015-10-1405:20:29
或网站可用于在元标记中描述日期的任何有效格式(因此格式将是官方的,而不是异想天开,但可能性不小)。
我可以使用joda-time来解决这个问题吗? java.util.Date
或其他怎么样?
更新
我想我找到了一个 Java与我正在寻找的脚本等价的脚本
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
但是我需要Java的答案。
嗯,这不是真正的 "java" 解决方案,但如果您找到 Javascript 解决方案,那么您可以使用 java 中的 Javascript 解决方案,使用ScriptEngine.
只是有点快和肮脏......:)
这里有一个示例代码:
public static void main(String[] args) throws ScriptException, ParseException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String[] dateStrings = new String[] {
"2015-10-14T16:41:42.000Z",
"2015-10-14T19:01:53.100+01:00",
"2015-10-14 05:20:29" };
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
for (String d : dateStrings) {
String script = "new Date('" + d + "')";
Object eval = engine.eval(script);
Date parsed = sdf.parse(eval.toString().replace("[Date ", "").replace("]", ""));
System.out.println(eval + " -> " + parsed);
}
}
打印出:
[Date 2015-10-14T16:41:42.000Z] -> Wed Oct 14 18:41:42 CEST 2015
[Date 2015-10-14T18:01:53.100Z] -> Wed Oct 14 20:01:53 CEST 2015
[Date 2015-10-14T03:20:29.000Z] -> Wed Oct 14 05:20:29 CEST 2015
eval.toString() 部分可以明显改进。作为区域设置...