为什么我的日期没有按照dateformat进行格式化

时间:2015-01-23 12:28:32

标签: java

我想以特定格式保存日期,下面是我的代码:

班级:

Date timestampbackup;

本地方法级别:

java.util.Date date= new java.util.Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String fechaStr = (new Timestamp(date.getTime())).toString();  

    System.out.println("fechaStr "+fechaStr.toString());

    timestampbackup = format.parse(fechaStr);

    System.out.println("timestamp "+timestampbackup.toString());

这是输出:

        fechaStr 2015-01-23 17:54:25.465
        timestamp Fri Jan 23 17:54:25 GMT+05:30 2015

这里可能有什么问题?

3 个答案:

答案 0 :(得分:3)

此:

String fechaStr = (new Timestamp(date.getTime())).toString(); 

无论您创建的格式如何,都可以使用。 Timestamp来自java.sql包,因此其toString()方法以SQL标准格式返回日期。

您不应该这样做以将日期转换为此字符串格式。此类应用于在数据库中设置时间戳,而不是用于日期格式。如果您使用它,可能会导致时区出现问题。

然后你使用

timestampbackup = format.parse(fechaStr);

使用您创建的日期字符串并对其进行解析,并将其放入timestampbackup对象中。现在,您的timestampbackupjava.util.Date,而不是java.sql.Date,这很好,但这意味着它的toString()方法可以根据您的语言环境的默认格式运行。

解析创建了一个日期对象,该对象在内部存储信息,作为自给定开始日期起经过的时间。因此,使用该格式进行解析不会影响日期的显示方式。任何格式信息都会丢失。

因此,您应该使用format.format(timestampbackup)而不是timestampbackup.toString()来获取所需的字符串。根本解析它并不重要。

答案 1 :(得分:1)

可能你做了一些错误格式化然后使用toString()..以下代码对我来说很有用。只需使用ft.format()来获取时间格式的字符串。

    Date dNow = new Date( );
    SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
    System.out.println(ft.format(dNow));

答案 2 :(得分:1)

您需要使用: format.format(<your date>)