我想以特定格式保存日期,下面是我的代码:
班级:
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
这里可能有什么问题?
答案 0 :(得分:3)
此:
String fechaStr = (new Timestamp(date.getTime())).toString();
无论您创建的格式如何,都可以使用。 Timestamp
来自java.sql
包,因此其toString()
方法以SQL标准格式返回日期。
您不应该这样做以将日期转换为此字符串格式。此类应用于在数据库中设置时间戳,而不是用于日期格式。如果您使用它,可能会导致时区出现问题。
然后你使用
timestampbackup = format.parse(fechaStr);
使用您创建的日期字符串并对其进行解析,并将其放入timestampbackup
对象中。现在,您的timestampbackup
是java.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>)