java - 如何转换日期格式

标签 java date

我有一个字符串格式的日期格式为“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/

相关文章:

mysql - 如何在 MySQL Workbench 中将 "7-1-2014"转换为 "07-01-2014"?

java - 从第二个 Java 文件调用函数时崩溃

java - 如何理解 JavaFX 三角形网格?

java - 如何在Java中打开具有不同路径的pdf文件

java - 如何使用 Java 中的 Calendar 对象获取特定日期信息?

java - 日历日期时区问题

java - 知道字符串是否包含一个特定字符而不失去可读性的最有效方法是什么?

java - 将 Feign 与 Hystrix 结合使用时如何允许 400 错误传播?

asp.net - 如何在 ASP.NET 中验证日期

sql - 如何计算Sql Developer中两个不同列的月差?