将当前时间转换为此格式:" 2017-04-25T17:12:42 + 01:00"

时间:2017-05-19 10:36:23

标签: java simpledateformat

如何将当前时间转换为此格式:

 "2017-04-25T17:12:42+01:00"

我能得到的最接近的是:

"2017-05-16T19:58:21+0100" 

使用以下格式:

SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZ").format(new Date())

由于

5 个答案:

答案 0 :(得分:2)

您应该使用现代Java 8 java.time包,更具体地说是DateTimeFormatterISO_OFFSET_DATE_TIME

来自文档:

  

public static final DateTimeFormatter ISO_OFFSET_DATE_TIME

     

ISO日期时格式化程序,用于格式化或解析日期时间   抵消,例如' 2011-12-03T10:15:30 + 01:00'。

工作代码:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Main
{
  public static void main(String[] args)
  {
    ZonedDateTime date = ZonedDateTime.now();
    String text = date.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    System.out.println(text);
  }
}

结果:

> run Main
2017-05-19T13:03:16.167+02:00

答案 1 :(得分:1)

对于这种特定格式,您只需使用java.time.OffsetDateTime(从Java-8开始可用):

OffsetDateTime.now().toString();

答案 2 :(得分:0)

ZZZ是RFC 822时区,如下所示:-0800;

XXX是ISO 8601时区,如下所示:-08:00;

如果您希望使用XXX,请使用ISO_OFFSET_DATE_TIME,例如,想要显示“01/15/2000T14:44:59-08:00”:

DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ssXXX").format(...);

答案 3 :(得分:-1)

您可以使用" yyyy-MM-dd' HH:mm:ssXXX "作为模式而不是 yyyy-MM-dd' HH:mm:ssZZZ ,请参阅示例here

答案 4 :(得分:-1)

SimpleDateFormat会为你做点什么

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");

formatter.format(date);