页面传递过来的是标准时间(yyyy-MM-dd’T’HH:mm:ss.SSSXXX),换成北京时间需要加上8个小时
例子:
后端DTO对象:
public void setEndTime(String endTime) {
this.endTime=endTime;
if(StringUtils.isBlank(endTime)) {
this.endTime = (DateUtils.dateFormatUTC(endTime));
}
}
XML文件:
因为日期是String类型,if标签里面需要对空字符进行判断:
<if test="startTime != null and startTime != '' ">
为了方便开发及测试,建议页面查询的SQL使用统一DATE_FORMAT()函数;
/**
* 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO 指定格式
* @param dateStr 日期
* @param pattern 传入格式
* @return
*/
public static String dateFormatUTC(String dateStr,String pattern){
return getString(dateStr, pattern);
}
/**
* 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO yyyy-MM-dd
* @param dateStr 日期
* @return
*/
public static String dateFormatUTC(String dateStr){
return getString(dateStr, DATE_PATTON_DEFAULT);
}
private static String getString(String dateStr, String pattern) {
DateFormat sdf1 = new SimpleDateFormat(UTC_DATE_FORMAT);
DateFormat sdf2 = new SimpleDateFormat(pattern);
try {
Date date = sdf1.parse(dateStr);
return sdf2.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static final String DATE_PATTON_DEFAULT = "yyyy-MM-dd";
public static final String UTC_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
前端日期选择器type(显示类型)使用默认值(date)
<el-form-item prop="beginDate" label="时间:">
<el-date-picker
style="width: 200px;" class="filter-item" :editable="false"
v-model="listQuery.beginDate"
type="date"
format="yyyy-MM-dd"
placeholder="起始时间"
:picker-options="pickerBeginDateBefore"
>
</el-date-picker>
</el-form-item>