【问题标题】:How can I create a Date object with a specific format如何创建具有特定格式的 Date 对象
【发布时间】:2014-10-17 03:08:49
【问题描述】:
String testDateString = "02/04/2014";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 

Date d1 = df.parse(testDateString);
String date = df.format(d1);

输出字符串:

2014 年 2 月 4 日

现在我需要以相同方式格式化日期 d1 ("02/04/2014")。

【问题讨论】:

标签: java date java.util.date


【解决方案1】:

试试这样:

    SimpleDateFormat sdf =  new SimpleDateFormat("dd/MM/yyyy");

    Date d= new Date(); //Get system date

    //Convert Date object to string
    String strDate = sdf.format(d);

    //Convert a String to Date
    d  = sdf.parse("02/04/2014");

希望对您有所帮助!

【讨论】:

  • 你的代码和OP贴的代码有什么区别?
  • 你为什么要把parse的结果转换成Date?它返回一个 Date 对象。
  • 我不想要这个 2014 年 4 月 2 日星期三 00:00:00 GMT 输出。我需要 2014 年 2 月 4 日
  • @user2243468 并且您可以使用您发布的代码获得此信息。现在有问题吗? date2(或您的d1)不会原生打印您想要的格式?为此,您必须创建自己的类MyDate,它将扩展Date 类,并在那里覆盖toString 方法。在那里,您可以根据需要格式化输出。
【解决方案2】:

如果您想要一个始终打印所需格式的日期对象,您必须创建自己的 Date 类的子类并在那里覆盖 toString

import java.text.SimpleDateFormat;
import java.util.Date;

public class MyDate extends Date {
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

    public MyDate() { }

    public MyDate(Date source) {
        super(source.getTime());
    }

    // ...

    @Override
    public String toString() {
        return dateFormat.format(this);
    }
}

现在您可以像之前使用Date 一样创建此类,而无需每次都创建SimpleDateFormat

public static void main(String[] args) {
    MyDate date = new MyDate();
    System.out.println(date);
}

输出为23/08/2014

这是您在问题中发布的更新代码:

String testDateString = "02/04/2014";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 

MyDate d1 = new MyDate(df.parse(testDateString));
System.out.println(d1);

请注意,您不必再调用df.format(d1)d1.toString() 会将日期作为格式化字符串返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多