【问题标题】:Format Date Java格式化日期 Java
【发布时间】:2014-03-11 11:05:35
【问题描述】:

如何格式化一个看起来像这样的字符串

2012 年 12 月 8 日星期六 00:00:00 JST

进入 yyyy-mm-dd 即

2012-12-08

通过浏览web,我发现了这段代码:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
    String dateInString = "Sat Dec 08 00:00:00 JST 2012";

    try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);
        System.out.println(formatter.format(date));

    } catch (ParseException e) {
        e.printStackTrace();
    }

但是,我无法修改它以接受第一行(Sat Dec 08 00:00:00 JST 2012)作为字符串并将其格式化为 yyyy-mm-dd 格式。

我该怎么办?我应该尝试修改它吗?还是完全尝试另一种方法?

更新:我正在使用您的答案(出现错误:无法解析的日期:“Sat Dec 08 00:00:00 JST 2012”)

public static void main(String[] args) throws ParseException{
        SimpleDateFormat srcFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.JAPANESE);
        SimpleDateFormat destFormatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.JAPANESE);
        Date date = srcFormatter.parse("Sat Dec 08 00:00:00 JST 2012");
        String destDateString = destFormatter.format(date);
       /* String dateInString = "Sat Dec 08 00:00:00 JST 2012";*/
        System.out.println(destDateString);

        /*try {

            Date date = formatter.parse(dateInString);
            System.out.println(date);
            System.out.println(formatter.format(date));

        } catch (ParseException e) {
            e.printStackTrace();
        }*/
    }
}

【问题讨论】:

  • 第一个字符串使用英文单词,所以你应该给 SimpleDateFormat 一个 Locale。 new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);.
  • 不要认为这行得通,我已将 qn 更新为更具体。请参阅 String dateInString = "Sat Dec 08 00:00:00 JST 2012";
  • 您实际上有 2 个问题。 1)您需要 2 种日期格式(如 Warlord 和 SubhrajyotiMajumder 所述)。 2) 如果你没有给出语言环境并且在默认语言不是英语的 jvm 上执行代码,它将无法解析单词。
  • 我已经更新了代码以包含你的和 SubhrajyotiMajumder 的答案,但我无法让它工作。字符串仍然无法解析

标签: java date datetime date-format


【解决方案1】:

试试这个 -

SimpleDateFormat srcFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.JAPANESE);
SimpleDateFormat destFormatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.JAPANESE);
Date date = srcFormatter.parse("Sat Dec 08 00:00:00 JST 2012");
String destDateString = destFormatter.format(date);

【讨论】:

  • + 提供语言环境。或者它只有在默认语言是英语时才有效。
  • @Subhrajyoti Majumder:他希望以这种格式输出2012-12-08
  • @Subhrajyoti Majumder - 字符串仍然无法解析
【解决方案2】:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
String dateInString = "Wed Oct 16 00:00:00 CEST 2013";
    try {
        SimpleDateFormat parse = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
        Date date = parse.parse(dateInString);
        System.out.println(date);
        System.out.println(formatter.format(date));

    } catch (ParseException e) {
        e.printStackTrace();
    }

将你的阵型改为new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);

谢谢..

【讨论】:

  • 为什么你会像上面的答案所建议的那样选择英语而不是日语?
  • 它非常适合我,这就是为什么!如果你想要语言环境我日本那么你可以改变它!
  • 你在哪里使用 parse 变量?
  • 我更新了我的答案!我忘记更新变量名了!!现在看看!
【解决方案3】:

您需要两个 SimpleDateFormat 对象。一个使用parse() 方法从字符串中解析日期,第二个使用format() 方法以所需格式输出日期。有关日期格式的更多信息,请查看docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多