我有一个字符串格式的日期格式为“1980 年 11 月 10 日”(String str="1980 年 11 月 10 日"),我想将它转换为 1980-11-10。谁能告诉我如何使用 Java 做到这一点。
提前致谢
最佳答案
您应该首先从原始文本格式解析它,然后使用您希望它最终成为的格式对结果进行格式化。您可以使用 SimpleDateFormat
为此,或 Joda Time (这通常是一个更好的日期/时间 API)。
使用 SimpleDateFormat
的示例代码:
import java.text.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
String inputText = "Nov 10,1980";
TimeZone utc = TimeZone.getTimeZone("UTC");
// Or dd instead of d - it depends whether you'd use "Nov 08,1980"
// or "Nov 8,1980" etc.
SimpleDateFormat inputFormat = new SimpleDateFormat("MMM d,yyyy",
Locale.US);
inputFormat.setTimeZone(utc);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd",
Locale.US);
outputFormat.setTimeZone(utc);
Date parsed = inputFormat.parse(inputText);
String outputText = outputFormat.format(parsed);
System.out.println(outputText); // 1980-11-10
}
}
注意:
- 我已经明确指定要使用的语言环境;否则,如果您尝试在具有(例如)法语默认语言环境的系统上解析文本,它将尝试使用法语月份名称来解析它。
- 我已明确将时区设置为 UTC 以避免任何夏令时问题(在默认时区中特定值可能不明确甚至不存在)
关于java - 如何转换日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8589077/