【问题标题】:convert java.util.Date directly into desired format? [duplicate]将 java.util.Date 直接转换为所需的格式? [复制]
【发布时间】:2013-06-25 08:04:21
【问题描述】:

如何将 java.util.Date 直接转换为所需的日期格式? 我尝试先将日期转换为字符串,然后再转换为日期,但它仍然采用日期格式为 Mar 10,2011,我希望这种格式为 10-03-2011

【问题讨论】:

  • 您通常的答案:java.util.Date 仅表示自 1970 年 1 月 1 日格林威治标准时间以来的毫秒时间。 Date 对象具有 NO 格式信息。如果要打印日期,请使用SimpleDateFormat 而不是DatetoString() 方法。后者让大多数程序员感到困惑
  • 在询问与日期格式相关的问题之前请先看看这个w3.org/TR/NOTE-datetime
  • 您说您需要 Date 对象来进行排序?您如何直观地显示字符串对象?是否在 Swing 应用程序中。

标签: java


【解决方案1】:

很简单:) 和SimpleDateFormat 可以帮助你。

但是,如果您有日期字符串,那么是的,您需要将 日期字符串 解析为日期,然后再次将其重新格式化为所需的格式(dd-MM-yyyy)。

【讨论】:

  • 是的,我已经尝试过了,但是 SimpleDateFormat 将日期转换为字符串,但我需要 Date 数据类型而不是字符串来进行排序,请您将您的想法用代码写出来吗?
  • 如果您的输入是字符串,则使用 SimpleDateFOrmat#parse 解析它,它将字符串转换为日期,您可以再次重新转换
  • 我的代码是这样的:java.util.Date date = .getDate;然后我做了这个新的 SimpleDateFormat("dd-MM-yyyy").format(date);为了获得所需的格式,但在 jtable 中显示它时,我需要将日期作为 Date 而不是 String
  • 因为在按升序或降序对日期进行排序时,必须将其视为日期而不是字符串
【解决方案2】:

OP 没有提到他在 JTable 中显示这些。您的 JTable 中的日期列需要这些东西。

  • A CellRenderer :这将以字符串格式显示日期(使用 Simpledateformat)
  • 一个 TableModel :它包含内部表示

现在,当您对 JTable 进行排序时,该列将根据内部数据表示进行排序。

【讨论】:

    【解决方案3】:

    只需将您的日期对象直接传递给此方法,您将获得所需字符串格式的日期

    new SimpleDateFormat("dd-MM-yyyy").format(date);
    

    【讨论】:

      【解决方案4】:

      你可以这样做

      SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy");
      String date = format.format(Date.parse(objectDate.toString()));
      

      【讨论】:

        【解决方案5】:

        使用日期格式 dd-MM-yyyy 创建一个SimpleDateFormat

        Date today = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        String date = dateFormat.format(today);
        System.out.println("Today in dd-MM-yyyy format : " + date);
        

        【讨论】:

          【解决方案6】:

          试试这个代码。

          String dateFormat = "dd-MM-yyyy";
          SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, new Locale("en_US"));
          String tDate = sdf.format(date);
          System.out.println(tDate);
          

          【讨论】:

            【解决方案7】:

            你可以试试这个

            Date date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(string);
            

            对于 2011 年 3 月 10 日,您的格式应为“dd-MM-yyyy”

            【讨论】:

            • 我尝试过这样的变体: SimpleDateFormat sf = new SimpleDateFormat("dd-MM-yyyy"); String stringDate = sf.format(date);日期 date1 = new SimpleDateFormat("dd-MM-yyyy").parse(stringDate);
            • 但它仍然在 JTable 中显示日期为 Mar 10,2011 但我需要在 jTable 中显示日期为 10-03-2011
            猜你喜欢
            • 1970-01-01
            • 2018-03-06
            • 1970-01-01
            • 2020-11-02
            • 2014-04-19
            • 1970-01-01
            • 2018-09-23
            • 1970-01-01
            • 2012-06-09
            相关资源
            最近更新 更多