我的日期格式如下
//输入日期
Thu Jun 06 2013 00:00:00 GMT+0530 (India Standard Time)
//输出日期格式
I want to change this to "dd-mm-yyyy, hh:mm:ss".
我从db获取输入日期格式。我必须将其更改为输出日期格式,我将在网格中显示它。
我尝试了以下代码。
DateFormat outputDate = new SimpleDateFormat("dd-mm-yyyy, hh:mm:ss");
try
{
Date date = outputDate.parse(facade.getDate.toString()); **//getting exception here**
outputDate = new SimpleDateFormat("dd-mm-yyyy, hh:mm:ss");
Date date1 = new SimpleDateFormat("dd-mm-yyyy, hh:mm:ss").parse(outputDate
.format(date));
facade.setDate(date1);
}catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
我正在
java.text.ParseException: Unparseable date: "2013-06-06 00:00:00.0".
任何帮助..
答案 0 :(得分:1)
"2013-06-06 00:00:00.0"
与"dd-mm-yyyy, hh:mm:ss"
不匹配,您的格式应为"dd-MM-yyyy hh:mm:ss"
但是,查看您的代码我猜facade.getDate
实际上是java.sql.Timestamp
,它继承自java.util.Date
,因此您可以直接将其传递给类似的格式
new SimpleDateFormat("dd-MM-yyyy, hh:mm:ss").format(facade.getDate)
答案 1 :(得分:1)
以下是一些适用于我的代码:
import java.text.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
String input = "Thu Jun 06 2013 00:00:00 GMT+0530 (India Standard Time)";
DateFormat inputFormat = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss 'GMT'z",
Locale.ENGLISH);
Date date = inputFormat.parse(input);
DateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",
Locale.ENGLISH);
outputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String output = outputFormat.format(date);
System.out.println(output);
}
}
需要考虑的事项:
SimpleDateFormat
对象永远不会起作用。SimpleDateFormat
,M
表示月份,m
表示分钟; h
使用12小时制,H
使用24小时制。这假设您实际上需要以字符串开头。如果getDate
已经是Date
或Timestamp
,则可以忽略第一部分 - 只需使用上述代码的输出部分即可。您应该尽可能避免不必要的字符串转换。
请注意,dd-MM-yyyy
是一种略微异常格式 - 您确定实际上并不希望yyyy-MM-dd
更常见(并且可排序)吗?
答案 2 :(得分:0)
DateFormat outputDate = new SimpleDateFormat("yyyy-dd-mm hh:mm:ss");
try {
Date date = outputDate.parse("2013-06-06 00:00:00.0");
System.out.println(new SimpleDateFormat("dd-mm-yyyy, hh:mm:ss").format(date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
运作良好,第1行不正确。您的SimpleDateFormat.parse需要采用输入日期的确切格式。然后你想以不同的格式输出它,所以你再制作一个并设置格式,然后调用SimpleDateFormat.format(date),然后在其上放一个println。
答案 3 :(得分:0)
错误就在这里
DateFormat outputDate = new SimpleDateFormat("dd-mm-yyyy, hh:mm:ss");
模式应该等于Thu Jun 06 2013 00:00:00 GMT+0530 (India Standard Time)
。不要出你的字符串模式。
答案 4 :(得分:0)
@Test
public void test() throws ParseException {
SimpleDateFormat sdf_org = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss 'GMT'Z", Locale.ENGLISH);
Date d = sdf_org.parse("Thu Jun 06 2013 00:00:00 GMT+0530");
SimpleDateFormat sdf_target = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss.SSS");
System.out.println(sdf_target.format(d));
}
输出控制台:2013-30-06 03:30:00.000