我想将UTC日期转换为IST。但令我惊讶的是,在转换所有内容之后,它仍然只以UTC返回。这怎么可能?无法将UTC转换为IST,它仍然只返回UTC
输入:
StartDateTimeUtc='2017-09-15T14:00:00',
EndDateTimeUtc='2017-09-15T15:00:00'
代码:再次
public static final String DATE_FORMATE_CURRENT = "yyyy-MM-dd'T'HH:mm:ss";
Date meetingStartDate = new SimpleDateFormat(Constants.DATE_FORMATE_CURRENT, Locale.ENGLISH).parse(model.StartDateTimeUtc);
Date meetingEndDate = new SimpleDateFormat(Constants.DATE_FORMATE_CURRENT, Locale.ENGLISH).parse(model.EndDateTimeUtc);
//Convert Date to String
DateFormat df = new SimpleDateFormat(Constants.DATE_FORMATE_CURRENT);
String meetinStartDateString = df.format(meetingStartDate);
String meetingEndDateString = df.format(meetingEndDate);
//Convert String Date to IST
SimpleDateFormat dftwo = new SimpleDateFormat(Constants.DATE_FORMATE_CURRENT);
dftwo.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
Date date = null;
Date datetwo = null;
try {
date = dftwo.parse(meetinStartDateString);
datetwo = dftwo.parse(meetingEndDateString);
} catch (ParseException e) {
e.printStackTrace();
}
dftwo.setTimeZone(TimeZone.getDefault());
String formattedStartDate = dftwo.format(date);
String formattedEndDate = dftwo.format(datetwo);
//Convert String Date back to Date format so that we can pass into Calendar code
Date meetingStartDateFinal = new SimpleDateFormat(Constants.DATE_FORMATE_CURRENT, Locale.ENGLISH).parse(formattedStartDate);
Date meetingEndDateFinal = new SimpleDateFormat(Constants.DATE_FORMATE_CURRENT, Locale.ENGLISH).parse(formattedEndDate);
输出UTC:
Start Date : Fri Sep 15 14:00:00 GMT+05:30 2017
End Date : Fri Sep 15 15:00:00 GMT+05:30 2017
'GMT + 05:30'不是UTC。另外,如果你可以请** **问题并添加'model.StartDateTimeUtc'和'model.EndDateTimeUtc'的值,以及正确的输出结果是什么。无论如何,如果您直接打印日期对象,请记住日期[没有时区信息](https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util -date),你看到的是'toString()'方法(它在后台使用JVM默认时区)的结果。 – 2017-09-15 13:14:42
Thanks @ Hugo:我已经编辑并添加了开始和结束时间。谢谢 – Golmaal
麻烦的Date类现在被java.time类取代,特别是'Instant'。例如:'Instant.now()。atZone(“Asia/Kolkata”)' –