【问题标题】:Date conversion in JavaJava中的日期转换
【发布时间】:2011-02-11 03:44:37
【问题描述】:

我怎样才能将 string 格式为:2008-06-02 00:00:00.0 并将其转换为:02-Jun-2008

我能否以某种方式获取原始字符串,将其转换为 Date 对象,然后使用格式化程序获取最终输出(而不是自己解析字符串)?谢谢!

【问题讨论】:

  • 您的查询“我能以某种方式......”是正确的。进一步调查该路径。
  • 还没有人提到 JodaTime。这一定是第一次。
  • @Paul:他在评论中提到他不想使用外部库:) 这对我来说已经足够了。
  • @BalusC,这从未阻止过任何人。

标签: java string date


【解决方案1】:

您可以使用SimpleDateFormat 根据模式在StringDate 对象之间进行转换,反之亦然。单击 API 链接,您将看到详细解释的模式。 4 位数的年份可以用yyyy 表示,3 字符的月份缩写可以用MMM 表示等等。

首先你需要将第一种格式的String解析Date对象:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = sdf1.parse(inputString);

那么你需要将Date格式化成第二种格式的String

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
String outputString = sdf2.format(date);

请注意,您还需要考虑Locale 才能将月份打印为英文,否则它将使用平台的默认语言环境来翻译月份。

【讨论】:

  • 对于 outputString 行,不应该是sdf2.format(date)吗?
  • @justkt,在早期的编辑中已经修复了 :) Ctrl+C Ctrl+V 是邪恶的。
【解决方案2】:

使用 SimpleDateFormat 类的 2 个实例。一个用于将输入字符串转换为日期,第二个用于将日期转换回字符串,但采用另一种格式。

这是example of using SimpleDateFormat

【讨论】:

    【解决方案3】:
    DateFormat startFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
    DateFormat endFormat = new SimpleDateFormat("dd-MM-yyyy");
    String outputString = null;
    try {
        Date date = startFormat.parse(inputString);
        outputString = endFormat.format(date);
     } catch(ParseException pe) {
         throw new IllegalArgumentException(inputString + " is not properly formated.", pe);
     }
    

    【讨论】:

      【解决方案4】:

      您绝对可以像其他人推荐的那样使用 SimpleDateFormat 类。

      另一个建议,如果它适用于您的情况。如果您从 sql 查询中获取此数据,您还可以使用 to_char() 方法在查询本身中对其进行格式化。例如:to_char(column_name,'DD-MON-YYYY')

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多