jon*_*ejj 58
如果您使用的是Java 8和更高版本可以为预定义的格式RFC 1123,DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss O").
__PRE__
Han*_* R. 49
如果其他人试图在这里找到答案(就像我做的那样),这里有什么可以解决的问题:
String getServerTime() {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat(
"EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormat.format(calendar.getTime());
}
Run Code Online (Sandbox Code Playgroud)
为了使服务器说英语并在GMT时区给出时间.
Mar*_*ter 25
如果您正在使用Joda-Time(我强烈建议您在Java中处理日期和时间),您可以:
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
...
private static final DateTimeFormatter RFC1123_DATE_TIME_FORMATTER =
DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'")
.withZoneUTC().withLocale(Locale.US);
...
RFC1123_DATE_TIME_FORMATTER.print(new DateTime())
Run Code Online (Sandbox Code Playgroud)
Mal*_*alt 10
根据RFC7231,某些应用程序要求格式包含每月两位数字。Java 8 DateTimeFormatter.RFC_1123_DATE_TIME使用一位数字:
System.out.println(DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.now(ZoneOffset.UTC)));
Run Code Online (Sandbox Code Playgroud)
输出: Wed, 1 Aug 2018 14:56:46 GMT
有些应用程序不喜欢这样。在使用使用Joda-time或pre-java8的旧答案之前SimpleDateFormat,这是一个有效的Java-8 DateTimeFormatter:
DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss O")
现在,当您执行此操作时:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss O");
System.out.println(formatter.format(ZonedDateTime.now(ZoneOffset.UTC)));
Run Code Online (Sandbox Code Playgroud)
您得到Wed, 01 Aug 2018 14:56:46 GMT-请注意月日字段中的前导零。
如果您不担心其他依赖项,可以使用apache DateUtils:
import org.apache.http.impl.cookie.DateUtils;
DateUtils.formatDate(new Date(System.currentTimeMillis()));
// Tue, 17 Apr 2012 18:59:02 GMT
Run Code Online (Sandbox Code Playgroud)
如果您和我一样,正在尝试格式化Java 8 java.time.Instant,则需要将时区显式添加到格式化程序中.像这样:
Instant instant = Instant.now();
String formatted = DateTimeFormatter.RFC_1123_DATE_TIME
.withZone(ZoneOffset.UTC)
.format(instant);
System.out.println(formatted);
Run Code Online (Sandbox Code Playgroud)
哪个印刷品:
2016年3月15日星期二14:45:34 GMT