日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

原生html5时间组件,JFinal遇到了原生Html5时间组件格式转换问题怎么处理?

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原生html5时间组件,JFinal遇到了原生Html5时间组件格式转换问题怎么处理? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天JBolt種子用戶群里有人提問,JFinal針對原生Html5的日期時間選擇組件的格式轉換支持有問題,報錯。

于是我在JBolt的Demo中加入了這些去測試一下,這里使用的都是原生Html組件。

Input type=“text”默認就是一個簡單的單行文本輸入框。

如果修改為type=date、datetime-local、time

他們的樣式就發生了變化,有選擇器出來。

下面這些月和周還好說,直接使用字符串就能接到

比如:2019年04月 后臺接收到的是2019-04

2019年底15周后臺接收到的是2019-W15

這些字符串,存起來怎么解析看你心情,都不是大問題,系統也正常處理。

type="date"的后臺使用getData("date")就可以接收到

type="time"的后臺并沒有getTime("time")提供,可以先使用String接到,然后自己解析數字拼接成java.sql.Time,也可以調用TimeTypeConverter去轉。

有問題的是上面這個type="datetime-local"的。

這個既有日期部分,又帶著時間部分。

但是我們平時見到的格式都是:2019-04-25 23:08:38這樣的標準格式,但是天不遂人愿,Html5中這個組件提交的值是這種格式:2019-04-25T23:08。

中間的空格成了一個T,此時我們數據庫里定制的字段的類型是datetime類型(mysql)對應java類型的timestamp,對應的converter是TimestampTypeConverter.java

但是這個類里并沒有處理這個多余的T,這個問題已經反饋給波總,新版已經增加了這塊的兼容處理。

說一下處理方式:

就是在converter里拿到這個帶著T的數據,去判斷,如果這個數據沒有空格 并且同時包含字符'-' 字符'T'字符':',就需要將T字符轉換為空格字符。

新版是直接修改的

com.jfinal.core.converter.Converters.java這個類中的

新版還沒出來之前,需要自己擴展一下TimestampConverter.java了。package?cn.jbolt.common.config;

import?java.sql.Timestamp;

import?java.text.ParseException;

import?java.text.SimpleDateFormat;

import?java.util.Date;

import?com.jfinal.core.converter.IConverter;

import?com.jfinal.kit.StrKit;

import?cn.jbolt.common.util.DateUtil;

/**

*?JBolt中處理timestamp的converter

*?特殊處理前端原生Html5的控件?input?type="datetime"

*?@ClassName:??JBoltTimestampConverter

*?@author:?JFinal學院-小木?QQ:909854136

*?@date:???2019年4月25日?下午9:28:38

*

*/

public?class?JBoltTimestampConverter?implements?IConverter?{

private?static?final?String?datePattern?=?"yyyy-MM-dd";

private?static?final?int?dateLen?=?datePattern.length();

private?static?final?int?timeStampWithoutSecPatternLen?=?"yyyy-MM-dd?HH:mm".length();

//?mysql?type:?timestamp,?datetime

@Override

public?java.sql.Timestamp?convert(String?s)?throws?ParseException?{

//增加這一步處理就行了

if(s.indexOf("?")==-1&&s.indexOf("-")!=-1&&s.indexOf(":")!=-1&&s.indexOf("T")!=-1){

s=s.replace("T",?"?");

}

if?(timeStampWithoutSecPatternLen?==?s.length())?{

s?=?s?+?":00";

}

return?s;

if?(s.length()?>?dateLen)?{

return?java.sql.Timestamp.valueOf(s);

}

else?{

return?new?java.sql.Timestamp(new?SimpleDateFormat(datePattern).parse(s).getTime());

}

}

}

OK,這塊代碼在JFinal的Gitee上 波總已經上傳,遇到這個問題的可以暫時使用上面這個類代替。

只需要在JFinalConfig的類中配置配置一下就可以了。

總結

以上是生活随笔為你收集整理的原生html5时间组件,JFinal遇到了原生Html5时间组件格式转换问题怎么处理?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。