我喜欢通过提供timeZone来格式化JSTL中的DateTime。但它并不完美。我经历了很多建议,但无法达到目标。我试过这个是
<fmt:formatDate value="${timeSlot.getStartTime()}"
pattern="HH:mm" timeZone="UTC-6" var="startTime" />
修改的: -
对于timeSlot.getStartTime()
,value =“08:41:00”
任何帮助或建议。
更新
使用input type="time"
后,它就像那样
答案 0 :(得分:0)
经过SO Q&A
的一些调查和建议后,我以另一种方式解决了timezone
问题。让我分享一下我的所作所为。
HttpServletRequest
。此本地TimeZone偏移值为
用javascript
计算。 js code 。
var offset = new Date().getTimezoneOffset();
var timeZone = offset / -60;
TimeZone Offset
从database
获取的数据。Java代码
String timeZoneValue = request.getParameter("timeZone");
timeZoneValue = Long.valueOf(timeZone).longValue(); // convert string to long value.
// get the calendar instances
Calendar cal = Calendar.getInstance();
cal.setTime(time); // set the time which get from DB
cal.add(Calendar.MINUTE, timeZoneValue.intValue() * 60); // added the timezone offset.
// formatting the time
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
parseTime = simpleDateFormat.format(cal.getTime());
Date newDate = simpleDateFormat.parse(parseTime);
这种机制非常适合我。谢谢。
注意:在数据库中,我总是将时间保存为UTC
格式。