当前位置: 首页 > 知识库问答 >
问题:

如何使用Java将当前UTC时区转换为印度标准时间[副本]

季城
2023-03-14

我正在尝试使用下面的代码转换当前的UTC时间(来自我的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(印度标准时间)。我不明白怎样才能解决这个问题。谁能让我知道我在这里犯的错误是什么,我该如何解决它?

共有1个答案

尉迟远
2023-03-14

这一行是无用的,并导致错误(UTCime不是日期,而是字符串)。

       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);
        }
    }
}
 类似资料:
  • 本文向大家介绍JavaScript将当前时间转换成UTC标准时间的方法,包括了JavaScript将当前时间转换成UTC标准时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript将当前时间转换成UTC标准时间的方法。分享给大家供大家参考。具体如下: 这里使用JavaScript将当前时间转换成UTC标准时间,北京在东八区,在北京时间基础上减掉8小时 希望本文所述对大

  • 我尝试了convert_timezone('CET',current_timestamp)函数,但它在AWS Athena中不被识别 在更简单的工作中,我在Presto中寻找SQL Server函数GETUTCDATE()的替代品,只是希望获得CET时间戳。有什么建议吗?

  • 问题内容: 作为json的回应,我正在获取UTC时区。我需要将其转换为当地时间。 有人可以帮忙吗? 问题答案: 编辑(2017年1月2日):请参阅@Jason的答案,它比这更好,因为它使用自定义过滤器修复日期格式-这是更Angular的方法。 我的原始答案和修改内容: 您可以使用过滤器格式化日期: 这将输出: (假设) 请参阅angularjs.org中的此文档。它有很多示例,非常有帮助! 编辑:

  • 问题内容: 我知道这个主题已被殴打致死,但在搜寻了这个问题几个小时之后,我不得不问。 我的问题:根据客户端应用程序(iphone)的当前时区对服务器上的日期进行计算。客户端应用程序以秒为单位告诉服务器,其时区距GMT的距离。然后,我想使用此信息对服务器中的日期进行计算。服务器上的日期都存储为UTC时间。 因此,在将UTC日期对象转换为该本地时区之后,我想获取其HOUR。 我目前的尝试: 变量小时和

  • 我是PostgreSQL的新手,我想知道是否有一种直接的方法可以使用函数将表中的时间戳值转换为不同的时区。在我的情况下,是UTC到EST。 例如,我需要将这些值转换为EST(不仅仅是一个值,而是表中的所有值)

  • 我做了下面的代码,但我知道它是正确的或不是,请协助我做正确的方式时区转换。 我把UTC日期作为json字符串,转换成用户的时区格式,并显示Android端