Java字符串到日期转换问题

时间:2012-10-02 11:13:04

标签: java datetime

我搜索了这个问题,但发现只是从String更改为Date,然后将Date显示为String。         我有一个要求,我以字符串格式接收日期然后我必须在Date对象中解析它并输入Database.But每当我将String转换为Date它给我错误的输出。请建议。提前致谢。

String subscribedDate="2012-09-28 11:00:00";
String oldFormat = "yyyy-mm-dd hh:mm:ss";
SimpleDateFormat sdf1 = new SimpleDateFormat(oldFormat);
Date dates=sdf1.parse(subscribedDate);
System.out.println(dates);
//code for entering dates in database. 

输出: 1月28日星期六00:09:00 GMT 2012(这是不正确的!!)。我想作为2012-09-28 11:00:00

5 个答案:

答案 0 :(得分:6)

您的格式字符串错误。 yyyy-mm-dd hh:mm:ss基本上是说“年 - 小时 - 天数:分钟:秒”,我很确定你不想要它。

你想要

String oldFormat = "yyyy-MM-dd hh:mm:ss";

查看SimpleDateFormat文档以获取更多信息

答案 1 :(得分:3)

首先,月份字段使用MM表示,而不是mm,表示分钟。

其次,格式化程序可用于以所需格式打印日期。

String subscribedDate="2012-09-28 11:00:00";
String oldFormat = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf1 = new SimpleDateFormat(oldFormat);
Date dates=sdf1.parse(subscribedDate);
System.out.println(sdf1.format(dates));
// code for entering dates in database. 

答案 2 :(得分:1)

尝试将oldFormat更改为

String oldFormat = "yyyy-MM-dd hh:mm:ss";

其中MM是大写字母。

答案 3 :(得分:1)

我想第二行中的oldFormat变量应该是

oldFormat = "yyyy-MM-dd HH:mm:ss"; // hours counted 0~23

oldFormat = "yyyy-MM-dd hh:mm:ss"; // hours counted 0~11

答案 4 :(得分:0)

试试这个:

        String oldFormat = "yyyy-MM-dd hh:mm:ss";

请参阅docs了解原因。