日期对象中Java中从BST到IST的日期转换

sun*_*ula 2 java android date

我有一个场景,即我的系统时区是什么,我必须在日期对象中的IST中打印而不是在字符串中打印.这是我的下面的代码.

public static void main(String[] args) throws ParseException {
    Date now = new Date();
    DateFormat sdf = new SimpleDateFormat("yyyy:MM:dd-HH:mm:ss");
     sdf.setTimeZone(TimeZone.getTimeZone("IST"));
     String txnDateTime = sdf.format(now); 
      sdf.setTimeZone(TimeZone.getTimeZone("IST"));
     System.out.println("Date ::: "+txnDateTime);

     Date n = null;
     n = sdf.parse(txnDateTime);
     System.out.println("Date format ::: "+n);

}
Run Code Online (Sandbox Code Playgroud)

我的输出如下:

In String : I am getting as Expected : 2016:08:23-12:46:59 IST Timing
In Date : I am still getting BST Time : Tue Aug 23 08:16:59 BST 2016
Run Code Online (Sandbox Code Playgroud)

我期待在2016年8月23日星期二12:46:59来到日期.

任何帮助,将不胜感激.

提前致谢.

And*_*ner 5

Date.toString()使用你的JVM的默认时区,因为Date它实际上没有明确的时区 - 它实际上只是一个几毫秒的包装器.

您必须使用DateFormat带有显式时区的打印来打印Date特定时区.