SimpleDateFormat («ММ / дд / гг, ЧЧ: мм: сс zzz») дает часовой пояс как GMT + 05: 30 - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу отображать время, как это

09/07/18, 23:15:00 IST

Я использую приведенный выше формат времени, но экземпляр часового пояса шоу, подобный этому, IST его шоу GMT+05:30. Я использую приведенный ниже код для разбора даты: -

 fun parseDate(time: String?): String? {
    if (time != null) {
        val inputPattern = "yyyy-MM-dd'T'HH:mm:ss"
        val outputPattern = "MM/dd/yy, HH:mm:ss zzz"
        val inputFormat = SimpleDateFormat(inputPattern, Locale.getDefault())
        val outputFormat = SimpleDateFormat(outputPattern, Locale.getDefault())

        var date: Date? = null
        var str: String? = null

        try {
            date = inputFormat.parse(time)
            str = outputFormat.format(date)
        } catch (e: ParseException) {
            e.printStackTrace()
        }
        return str
    }

    return time
}

Может ли кто-нибудь помочь мне решить эту проблему.

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

В соответствии с документацией должно быть: «ММ / дд / гг, ЧЧ: мм: сс zz». Это два «z» вместо 3.

А из этого другого вопроса вы должны установить TimeZone на SimpleDateFormat.

z: стандартное тихоокеанское время
zz: PST
zzz: GMT-08: 00

Но, как говорит ОП, три варианта дают одинаковый результат.

Пример:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class HelloWorld{

 public static void main(String []args){
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy, HH:mm:ss zz");
    Date date = new Date();
    sdf.setTimeZone(TimeZone.getTimeZone("IST"));
    String txtDate = sdf.format(date);
    System.out.println(txtDate);

    sdf = new SimpleDateFormat("MM/dd/yy, HH:mm:ss z");
    sdf.setTimeZone(TimeZone.getTimeZone("IST"));
    txtDate = sdf.format(date);
    System.out.println(txtDate);

    sdf = new SimpleDateFormat("MM/dd/yy, HH:mm:ss zzz");
    sdf.setTimeZone(TimeZone.getTimeZone("IST"));
    txtDate = sdf.format(date);
    System.out.println(txtDate);
 }
}

Выход:

09/07/18, 18:26:08 IST
09/07/18, 18:26:08 IST
09/07/18, 18:26:08 IST

Форматы SimpleDateFormat

0 голосов
/ 07 сентября 2018

Согласно документу https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html, вы должны использовать 'z' вместо 'zzz, а также попытаться установить часовой пояс для ваших форматов даты, как показано ниже.

 inputFormat.timeZone = TimeZone.getTimeZone("IST")
0 голосов
/ 07 сентября 2018

Вы должны установить часовой пояс, который вы хотите, как это

outputFormat.timeZone =  TimeZone.getTimeZone("Asia/Calcutta") // this is a unique identifier of "IST" 

Пример: https://try.kotlinlang.org/#/UserProjects/ulc8sg2dslsbgt4qsauqd1a1sv/akvvttd16f1sqjcg6rm7smuh6p

...