Я пытаюсь преобразовать отметку времени в дату, которую затем помещаю в параметры запроса.
Вот функция, которая преобразует метку времени в дату:
override fun fromTimestamp(timestamp: Long): String {
val tz = TimeZone.getTimeZone("UTC")
val calendar = Calendar.getInstance(tz)
calendar.timeInMillis = timestamp
// Quoted "Z" to indicate UTC, no timezone offset
val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
df.timeZone = tz
return df.format(calendar.time)
}
Кажется, что это прекрасно работает, когда мое устройство установлено на английском языке, после URL-кодировки даты, это то, чтоВ параметрах: 1970-01-01T00%3A00%3A00.000Z
Теперь, если мое устройство настроено на арабском языке, дата в кодировке URL выглядит следующим образом: %D9%A2%D9%A0%D9%A1%D9%A8-%D9%A1%D9%A0-%D9%A1%D9%A7T%D9%A1%D9%A9%3A%D9%A4%D9%A7%3A%D9%A1%D9%A9.%D9%A0%D9%A8%D9%A2Z
Я могу только предположить, что все эти символыПредполагается, что это целые числа, которые закодированы как арабские символы, изображающие дату
После некоторого поиска в Google я нашел это обсуждение , которое говорит об инициализации Календаря с помощью локали из США.Но, взглянув на код выше, вы заметите, что календарь инициализируется с UTC
часовым поясом.
Я думаю, что календарь, созданный из часового пояса UTC, выбил бы целые числа вместо символов конкретного языка, изображающих целые числа, но я не совсем уверен, как система Android работает с этим.
Есть идеи о том, как я могу изменить свою функцию для представления календарных дат с целыми числами независимо от локали?