Android Time.format ("% a") дает неверный день недели - PullRequest
2 голосов
/ 01 августа 2011

Я пытаюсь получить локализованный день для данной отметки времени.Мой код выглядит примерно так:

String timestamp = "2011-08-01T15:55:03.000+02:00";
Time time = new Time();
time.parse3339(timestamp);
// In strftime format "%a" should be the abbreviated weekday name
// according to the current locale.
String result = time.format("%a")

Так как 1 августа 2011 года - понедельник, строка результата должна быть "Mon" (при условии английского языка), но вместо этого "Sun"!

Ответы [ 3 ]

5 голосов
/ 02 августа 2011

time.normalize () должен быть вызван, иначе значения для weekDay, yearDay, isDst и gmtoff будут равны 0.

Правильный код:

time.parse3339(timestamp);
time.normalize(false);
String localizedDayOfWeek = time.format("%a")

БлагодаряФеми, который поставил меня на правильный путь, указав, что в некоторых случаях время может быть преобразовано в UTC с помощью time.parse3339 ().

1 голос
/ 01 августа 2011

Вы должны проверить возвращаемое значение: из Javadoc :

Returns true if the resulting time value is in UTC time.

Если анализ вернул время UTC, которое выпадает на воскресенье, вы можете получить это. Не уверен, как это было бы возможно, учитывая ваш пример выше, но я не могу думать ни о чем другом, что могло бы сделать это.

0 голосов
/ 01 августа 2011

Вам действительно нужно проанализировать данную метку времени, или вы хотели бы получить дату сейчас?В последнем случае используйте:

Time time = new Time();
time.setToNow();
String result = time.format("%a");
...