java - 如何使用 Java 将当前 UTC 时区转换为印度标准时间

标签 java simpledateformat datetime-format

我正在尝试使用下面的代码转换当前 UTC 时间(来 self 的 Linux 服务器的时间)。

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

public class UtcToIst {

    public static void main(String[] args) {
        List<String> timeZones = new ArrayList<String>();
        String ISTDateString = "";
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String utcTime = sdf.format(new Date());
        System.err.println("utcTime: " + utcTime);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String pattern = "dd-MM-yyyy HH:mm:ss";
        SimpleDateFormat formatter;
        formatter = new SimpleDateFormat(pattern);
        try {
            String formattedDate = formatter.format(utcTime);
            Date ISTDate = sdf.parse(formattedDate);
            ISTDateString = formatter.format(ISTDate);
            timeZones.add(utcTime+ ","+ ISTDateString);
        } catch(Exception e) {
            e.printStackTrace();
        }

        for(String i: timeZones) {
            System.out.println(i);
        }
    }
}

当我执行代码时,出现以下异常:

utcTime: 05-11-2018 12:55:28
java.lang.IllegalArgumentException: Cannot format given Object as a Date
    at java.text.DateFormat.format(DateFormat.java:310)
    at java.text.Format.format(Format.java:157)
    at UtcToIst.main(UtcToIst.java:21)

我看到 UTC 时间被正确获取为:05-11-2018 12:55:28 但代码无法将字符串解析为 IST(印度标准时间)。 我无法理解如何解决这个问题。 谁能告诉我我在这里犯了什么错误以及我该如何解决它?

最佳答案

此行无用并导致错误(utcTime 不是日期,而是字符串)。

       String formattedDate = formatter.format(utcTime);

只需替换:

        String formattedDate = formatter.format(utcTime);
        Date ISTDate = sdf.parse(formattedDate);

与:

        Date ISTDate = sdf.parse(utcTime);

全类:

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

public class UtcToIst {

    public static void main(String[] args) {
        List<String> timeZones = new ArrayList<String>();
        String ISTDateString = "";
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String utcTime = sdf.format(new Date());
        System.err.println("utcTime: " + utcTime);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String pattern = "dd-MM-yyyy HH:mm:ss";
        SimpleDateFormat formatter;
        formatter = new SimpleDateFormat(pattern);
        try {
            Date ISTDate = sdf.parse(utcTime);
            ISTDateString = formatter.format(ISTDate);
            timeZones.add(utcTime+ ","+ ISTDateString);
        } catch(Exception e) {
            e.printStackTrace();
        }

        for(String i: timeZones) {
            System.out.println(i);
        }
    }
}

关于java - 如何使用 Java 将当前 UTC 时区转换为印度标准时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155003/

相关文章:

java - 无法解析此日期

java - 如何在 Java 中修复 'Date Time Parse Exception'

java - 如何在java中获取系统日期和时间格式?

java - Junit 和 Selenium 的 Maven 编译错误

java - 尝试在Android平台上的两个类之间传递int

java - 什么是 Android 中的 Parcelable

带有可选位的python strptime格式

java - Protobuf 重复字段到 json 数组映射

java - 如何将 HH :mm:ss. SSS 转换为毫秒?

php - Mysql DATE字段选择格式为yyyy-MM-ddTHH :mm:ss-HH:mm