2

这个的Java DateTime 格式是什么?

2012 年 11 月 26 日星期一 13:57:03 SGT

我想将此字符串转换为日期并将其转换为另一种格式,例如“yyyy-MM-dd HH:mm:ss”。

从日期转换为字符串并不难。

格式格式化程序 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

但我发现没有有效的格式可以将“Mon Nov 26 13:57:03 SGT 2012”转换为日期格式......

=====

找到解决方案:

DateFormat oldDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Format newDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date oldDate = oldDateFormat.parse(oldTimeString);
String newDateString = newDateFormat.format(oldDate);
4

4 回答 4

4

这将起作用,EEE MMM dd HH:mm:ss z yyyy

您可以在 .java 的 javadoc 中找到示例SimpleDateFormat。请参阅http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

于 2012-11-29T07:02:01.910 回答
3

好吧,这段代码产生了一些输出

import java.util.*;
import java.text.*;

public class Test {

    public static void main(String[] args) throws ParseException {
        DateFormat inputFormat = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy",
                                                      Locale.US);
        DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                                                       Locale.US);
        String text = "Mon Nov 26 13:57:03 SGT 2012";

        Date date = inputFormat.parse(text);
        System.out.println(outputFormat.format(date));
    }
}

...但它使用默认的系统时区进行输出。目前尚不清楚您想要结果的时区。没有Date存储时区,这使得很难保留文本中给出的原始时区,因此您需要自己决定使用哪个时区。

请注意,我Locale.US在输入和输出中都指定了;当您指定自定义格式时,这通常是合适的,特别是对于依赖于月份和日期名称的输入。

正如评论中所指出的,如果可以的话,我个人建议您使用Joda Time进行日期/时间工作......它是一个比/更好的 API 。不幸的是,Joda Time 无法解析时区 - 来自以下文档:DateCalendarDateTimeFormat

区域名称:时区名称 ('z') 无法解析。

还值得注意的是,如果有任何方法可以影响输入数据,那么将它们从使用时区缩写中移开将是一个很好的步骤。

于 2012-11-29T07:02:21.503 回答
3

尝试SimpleDateFormat.parse()将字符串转换为Date.

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date parseDate = sdf.parse(strInput);

注意解析异常

于 2012-11-29T07:05:37.117 回答
0
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CPDateTime 
{
    public static void main(String[] args)
    {
        Calendar cal  = Calendar.getInstance();
        //subtracting a day
        //cal.add(Calendar.DATE, -1);
        cal.add(Calendar.MONTH, -1);
        SimpleDateFormat prev_day = new SimpleDateFormat("dd");
        SimpleDateFormat prev_month = new SimpleDateFormat("MM");
        SimpleDateFormat prev_year = new SimpleDateFormat("YYYY");   
        String prev_day_str = prev_day.format(new Date(cal.getTimeInMillis()));
        System.out.println(prev_day_str);
        String prev_month_str = prev_month.format(new Date(cal.getTimeInMillis()));
        System.out.println(prev_month_str);
        String prev_year_str = prev_year.format(new Date(cal.getTimeInMillis()));
        System.out.println(prev_year_str);
    }
}
于 2016-01-27T09:46:58.373 回答