Според този C # код от Mircrosoft има стандартен формат за дата като този:
// R: Sun, 15 Jun 2008 21:15:07 GMT
Моят C # код използва "r" така:
webRequest.Date.ToUniversalTime().ToString("r")
Как мога да създам стандартен формат за дата като този в Java?
Имам това досега:
this.timestamp = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z").format(new Date());
Но не знам дали трябва да се опитам да напиша нещо, което да съответства на него, или ако има по-добър начин. Страхът ми е, че ще направя грешка и някои дати няма да работят.
Отговори:
4 за отговор № 1Как мога да създам стандартен формат за дата като този в Java?
Погледни документацията за r
формат:
Поредицата за персонализиран формат е "ddd, dd MMM yyyy HH": "mm": "ss" GMT ". Когато се използва този спецификатор на стандартен формат, операцията по форматиране или разбор винаги използва инвариантната култура.
[...] Следователно, приложението трябва да конвертира стойността на датата и часа в UTC, преди да извърши операцията по форматиране
Така превеждате този персонализиран формат в SimpleDateFormat
, * и се уверете, че сте задали часовата зона (UTC) и локал (американският английски е достатъчно близък до неизменната култура):
DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss "GMT"",
Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
String text = format.format(date);
Това е, ако искате да съответства на формата от .NET r
формат. Аз лично ще използвам формат ISO-8601, напр.
DateFormat format = new SimpleDateFormat("yyyy-MM-dd"T"HH:mm:ss.SSS"Z"",
Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));