我的约会时间为Tue Mar 19 00:41:00 GMT 2013
,如何将其转换为2013-03-19 06:13:00
?
final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final Date date = bdate;
Date ndate = formatter.parse(formatter.format(date));
System.out.println(ndate);
给出相同的日期。
答案 0 :(得分:4)
使用两个具有适当格式的SimpleDateFormat对象,并使用第一个将字符串解析为日期,使用第二个将日期格式化为字符串。
答案 1 :(得分:2)
正如第一个答案所说。首先使用SimpleDateFormat解析您的日期,如下所示:
Date from = new SimpleDateFormat("E M d hh:mm:ss z yyyy").parse("Tue Mar 19 00:41:00 GMT 2013");
然后使用它来使用另一个SimpleDateFormat实例格式化生成的日期对象,如下所示:
String to = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(from);
请参阅SimpleDateFormat here的javadoc。希望有所帮助。
答案 2 :(得分:2)
其他人遗漏的一个主要问题是处理时区(TZ)。任何时候你使用SimpleDateFormat来转换日期的字符串表示,你真的需要知道你正在处理的TZ。除非您在SimpleDateFormat上明确设置TZ,否则在格式化/解析时它将使用默认 TZ。除非您只处理默认时区中的日期字符串,否则您将遇到问题。
您的输入日期代表GMT中的日期。假设您还希望将输出格式化为GMT,则需要确保在SimpleDateFormat上设置TZ:
public static void main(String[] args) throws Exception
{
String inputDate = "Tue Mar 19 00:41:00 GMT 2013";
// Initialize with format of input
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
// Configure the TZ on the date formatter. Not sure why it doesn't get set
// automatically when parsing the date since the input includes the TZ name,
// but it doesn't. One of many reasons to use Joda instead
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = sdf.parse(inputDate);
// re-initialize the pattern with format of desired output. Alternatively,
// you could use a new SimpleDateFormat instance as long as you set the TZ
// correctly
sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
}
答案 3 :(得分:1)
以这种方式使用SimpleDateFormat:
final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final Date date = new Date();
System.out.println(formatter.format(date));
答案 4 :(得分:0)
如果你进行任何计算或解析日期,请使用JodaTime,因为标准的JAVA日期支持确实是错误的