您不能“将该日期值转换为”其他时区或UTC. java.util.Date类型没有任何内部时区状态,并且仅以用户无法更改的方式引用UTC(仅计算自UTC时区中的UNIX纪元以后的毫秒数,而不考虑leapseconds).
但是您可以将java.util.Date的格式化String表示转换为另一个时区.我更喜欢使用两种不同的格式化程序,每个时区(和模式)一个.我也更喜欢在你的情况下使用“亚洲/加尔各答”,因为它将普遍起作用(IST也可能是“以色列标准时间”,在以色列将有不同的解释):
DateFormat formatterIST = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
formatterIST.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); // better than using IST
Date date = formatterIST.parse("15-05-2014 00:00:00");
System.out.println(formatterIST.format(date)); // output: 15-05-2014 00:00:00
DateFormat formatterUTC = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
formatterUTC.setTimeZone(TimeZone.getTimeZone("UTC")); // UTC timezone
System.out.println(formatterUTC.format(date)); // output: 14-05-2014 18:30:00
// output in system timezone using pattern "EEE MMM dd HH:mm:ss zzz yyyy"
System.out.println(date.toString()); // output in my timezone: Wed May 14 20:30:00 CEST 2014