Время UTC в Котлине неверное

Я использую приведенный ниже код, чтобы получить время по Гринвичу (время Индии), но код показывает неправильное значение. Я пробовал использовать UTC и GMT в часовом поясе.

val f = SimpleDateFormat("yyyy-MM-dd HH:mm:ss z")
println("Hello World"+f)
f.timeZone = TimeZone.getTimeZone("GMT")
println("Hello World"+f.format(Date()))

Разве в Индии не GMT ​​+ 5:30? Я думаю, что Индия IST

Boe-Dev 17.11.2018 10:41

Даже IST тоже не работает ..

terer erererr 17.11.2018 22:11
1
2
416
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ваш 1-й println("Hello World"+f) печатает что-то вроде:

Hello Worldjava.text.SimpleDateFormat@4d810dfa

потому что вы печатаете ссылку на объект f.
Измените его на:

println("Hello World"+f.format(Date()))

и вы получите текущую местную дату / время, как это определено в настройках вашего компьютера.
Если вы хотите напечатать дату / время специально для Индии:

f.timeZone = TimeZone.getTimeZone("IST")
println(f.format(Date())) 

По-прежнему показывает неправильное значение, время в Индии 2:40 утра по IST 18.11.18, но показывает Hello World 2018-11-17 21:09:26 GMT + 00: 00

terer erererr 17.11.2018 22:10

На данный момент мне достались: 2018-11-17 21:16:45 GMT и 2018-11-18 02:46:45 IST

forpas 17.11.2018 22:17

Я не уверен, почему я получаю неправильное значение, если использую приведенный выше код.

terer erererr 17.11.2018 22:19

Я вижу разницу в 30 минут между вашим GMT и моим. Бывают ли случаи, что в Индии разные часовые пояса?

forpas 17.11.2018 22:22

Я думаю, что Индия следует по Гринвичу.

terer erererr 17.11.2018 22:24

Я имел в виду, что, поскольку Индия - очень большая страна, возможно, часовой пояс на востоке отличается от часового пояса на западе.

forpas 17.11.2018 22:26

Я думаю, что Индия следует только один раз, и в отличие от США, у которых разные часовые пояса.

terer erererr 17.11.2018 22:41

Да, я это проверил, но для одного и того же часового пояса у него два разных названия: IST и Asia/Kolkata.

forpas 17.11.2018 22:43

Я продолжу с Азией / Калькуттой. Спасибо за ваш ответ.

terer erererr 17.11.2018 22:57

Спасибо всем за ваш ответ, и код ниже работает для меня.

val calender = Calendar.getInstance()

    calender.timeZone = TimeZone.getTimeZone("Asia/Calcutta")

    println("Hello World"+
        calender.get(Calendar.HOUR_OF_DAY).toString() + ":" + calender.get(Calendar.MINUTE) + ":" + calender.getActualMinimum(
            Calendar.SECOND
        )
    )
Ответ принят как подходящий

IST или UTC у меня не работают, поэтому я добавил часовой пояс Asia / Calcutta.

val f = SimpleDateFormat("yyyy-MM-dd HH:mm:ss z")
println("Hello World"+f)
f.timeZone = TimeZone.getTimeZone("Asia/Calcutta")
println("Hello World"+f.format(Date()))

Другие вопросы по теме