如何在java

时间:2017-01-04 10:38:12

标签: java

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'SSSX");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("Current date and time in GMT: " + df.format("2017-01-04"));

以上是我的代码,当我尝试将日期转换为gmt时,我收到错误:

  

线程中的异常" main" java.lang.IllegalArgumentException:不能   格式给定对象作为日期在   java.text.DateFormat.format(DateFormat.java:310)at   java.text.Format.format(Format.java:157)at   Sample.main(Sample.java:24)

请指出我做错了什么。

 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'SSSX");
 df.setTimeZone(TimeZone.getTimeZone("GMT"));
 System.out.println("Current date and time in GMT: " + df.format(new Date()));

上面的代码工作正常,但我需要适合任何日期的东西。

当我尝试这段代码时:

try {
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'SSSX");
    df.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println("Current date and time in GMT: " + df.parse("2017-01-04"));

} catch(Exception e) {
    e.printStackTrace();
}

我得到了Unparseable date: "2017-01-04"。请告诉我如何解决它

3 个答案:

答案 0 :(得分:2)

如果您有日期对象,则可以根据需要对其进行格式化:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setTimeZone(TimeZone.getTimeZone("GMT"));

//create a calendar representing your date.
Calendar cal = Calendar.getInstance();
cal.set(2017, 01, 04);

//format the date object to the pattern you want.
String DateToStr = format.format(cal.getTime());

System.out.println(DateToStr);

如果你的日期是字符串,你也可以这样做:

String string = "2017-01-04";
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
format1.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = null;
try {
    date = format1.parse(string);
} catch (Exception ex) {
    ex.printStackTrace();
}
System.out.println(date);

答案 1 :(得分:2)

试试..

String s = "2016-11-21 13:30:0.0";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss);
        Date d = null;
        try 
        {
            d = format.parse(s);
        } catch (ParseException e) 
        {
            e.printStackTrace();
        }

        SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd'T'SSSX");

        gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

        System.out.println(gmtFormat.format(d));

答案 2 :(得分:0)

以下代码有助于更好地理解 - 您可以尝试取消注释注释行并比较结果。整个区块中您感兴趣的是gdf.parse(gmtFormat)

    Date date = new Date();
    DateFormat idf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    idf.setTimeZone(TimeZone.getTimeZone("IST"));
    DateFormat gdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    gdf.setTimeZone(TimeZone.getTimeZone("GMT"));

    //String istFormat = idf.format(date);
    //System.out.println("IST: "+istFormat);

    String gmtFormat = gdf.format(date);
    System.out.println("GMT: "+ gmtFormat);
    try {
        //System.out.println("gmt parsed from istFormat: "+gdf.parse(istFormat));
        //System.out.println("ist parsed from istFormat: "+idf.parse(istFormat));

        System.out.println("gmt parsed from gmtFormat: "+gdf.parse(gmtFormat));
        System.out.println("ist parsed from gmtFormat: "+idf.parse(gmtFormat));
    } catch (ParseException e) {
        e.printStackTrace();
    }
相关问题