<script language="javascript">
//参数dt:日期时间字符串
//参数msg:控件描述
//参数fm:日期时间格式
//参数type:语种类型,如空:公元,1:min
function checkDateByMask(dt,msg,fm,type){
//1.定义特殊的格式
var N=10;
var format=new Array(N);
format[0]="yyyy/MM/dd";
format[1]="yyyy-MM-dd";
format[2]="yy/MM/dd";
format[3]="yy-MM-dd";
format[4]="yyyy/MM/dd hh:mm:ss";
format[5]="yyyy-MM-dd hh:mm:ss";
format[6]="yy/MM/dd hh:mm:ss";
format[7]="yy-MM-dd hh:mm:ss";
format[8]="hh:mm:ss";
format[9]="hh:mm";
//2.定义错误提示
msg="\'"+msg+"\'";
var errPar=msg+"参数有误";
var errFormat=msg+"请按如下格式输入:\n"+fm;
var errYear=msg+"年份不对";
var errMonth=msg+"月份不对";
var errDay=msg+"日期不对";
var errHour=msg+"小时不对";
var errMinute=msg+"分钟不对";
var errSecond=msg+"秒钟不对";
//3.判断参数是否正确
var b=false;
for(var i=0;i<N;i++){
if(format[i].toLowerCase()==fm.toLowerCase()){
b=true;break;
}
}
if(!b){
return getErrorMsg(errPar);
}
//4.补足位数
if(dt.length!=fm.length){
var dt4=dt.replace(/[^0-9]/g,",")
var dtarr=dt4.split(",");
var dt3="";
var dtlen=0;
for(var i=0;i<dtarr.length;i++){
var len=dtarr[i].length;
dtlen=dtlen+len+1;
if(len<1)
dt3=dt3+"00"+dtarr[i];
else if(len<2)
dt3=dt3+"0"+dtarr[i];
else
dt3=dt3+dtarr[i];
dt3=dt3+dt.substr(dtlen-1,1);
}
dt=dt3;
}
//5.判断时间字符串与格式参数是否相符
if(dt.length!=fm.length){
return getErrorMsg(errFormat);
}
else{
var dt1=dt.replace(/[0-9]/g,"%d");
var dt2=fm.replace(/[ymdhs]/gi,"%d");
//alert(dt1+"\n"+dt2);
if(dt1!=dt2){
return getErrorMsg(errFormat);
}
}
//5.判断日期时间是否正确
try{
fm=fm.replace(/Y/g,"y").replace(/D/g,"d");
var iyyyy=fm.indexOf("yyyy");
var iyy=fm.indexOf("yy");
var imm=fm.indexOf("MM");
var idd=fm.indexOf("dd");
var ihh=fm.indexOf("hh");
var imi=fm.indexOf("mm");
var iss=fm.indexOf("ss");
var newdt=new Date();
var year="";
//Year
try{
var isyear=false;
if(iyyyy>-1){
year=dt.substr(iyyyy,4);
isyear=true;
}
else if(iyy>-1){
year=dt.substr(iyy,2);
isyear=true;
}
if(isyear){
if(type=="1"){//
year=parseInt(year)+1911;
}
newdt.setFullYear(year);
}
}
catch(e1){
return getErrorMsg(errYear+e1.toString());
}
//Month
try{
if(imm>-1){
if(dt.substr(imm,2)>"12"||dt.substr(imm,2)<"01"){
return getErrorMsg(errMonth);
}
newdt.setMonth(dt.substr(imm,2)-1);
}
}
catch(e1){
return getErrorMsg(errMonth+e1.toString());
}
//Day
try{
if(idd>-1){
if(dt.substr(idd,2)>"31"||dt.substr(idd,2)<"01"){
return getErrorMsg(errDay);
}
newdt.setDate(dt.substr(idd,2));
}
}
catch(e1){
return getErrorMsg(errDay);
}
//Hour
try{
if(ihh>-1){
if(dt.substr(ihh,2)>"23"){
return getErrorMsg(errHour);
}
newdt.setHours(dt.substr(ihh,2));
}
}
catch(e1){
return getErrorMsg(errHour);
}
//Minute
try{
if(imi>-1){
if(dt.substr(imi,2)>"59"){
return getErrorMsg(errMinute);
}
newdt.setMinutes(dt.substr(imi,2));
}
}
catch(e1){
return getErrorMsg(errMinute);
}
//Second
try{
if(iss>-1){
if(dt.substr(iss,2)>"59"){
return getErrorMsg(errSecond);
}
newdt.setSeconds(dt.substr(iss,2));
}
}
catch(e1){
return getErrorMsg(errSecond);
}
//Year
if(iyyyy>-1){
if(newdt.getFullYear()!=year){
return getErrorMsg(errYear);
}
}
else if(iyy>-1){
if(newdt.getFullYear()!=year){
return getErrorMsg(errYear);
}
}
//Month
if(imm>-1){
if(newdt.getMonth()!=(dt.substr(imm,2)-1)){
return getErrorMsg(errDay);
}
}
//Day
if(idd>-1){
if(newdt.getDate()!=dt.substr(idd,2)){
return getErrorMsg(errDay);
}
}
//Hour
if(ihh>-1){
if(newdt.getHours()!=dt.substr(ihh,2)){
return getErrorMsg(errMinute);
}
}
//Minute
if(imi>-1){
if(newdt.getMinutes()!=dt.substr(imi,2)){
return getErrorMsg(errSecond);
}
}
//Second
if(iss>-1){
if(newdt.getSeconds()!=dt.substr(iss,2)){
return getErrorMsg(errSecond);
}
}
alert(newdt);
}
catch(e){
return getErrorMsg(e.toString());
}
}
function getErrorMsg(msg){
alert(msg);
return false;
}
function isGyDate(obj,msg){
if(!checkDateByMask(obj.value,msg,"yyyy/MM/dd",""))
obj.focus();
}
function isMgDate(obj,msg){
if(!checkDateByMask(obj.value,msg,"yy/MM/dd","1"))
obj.focus();
}
function isGyDateTime(obj,msg){
if(!checkDateByMask(obj.value,msg,"yyyy/MM/dd hh:mm:ss",""))
obj.focus();
}
function isMgDateTime(obj,msg){
if(!checkDateByMask(obj.value,msg,"yy/MM/dd hh:mm:ss","1"))
obj.focus();
}
function isTime(obj,msg){
if(!checkDateByMask(obj.value,msg,"hh:mm:ss",""))
obj.focus();
}
function checkDate(){
return checkDateByMask(document.all.aa.value,"aa",document.all.formatStr.value,"");
}
</script>
<form name="form1">
<select name="formatStr">
<option value="yyyy/MM/dd">yyyy/MM/dd</option>
<option value="yyyy-MM-dd">yyyy-MM-dd</option>
<option value="yy/MM/dd">yy/MM/dd</option>
<option value="yy-MM-dd">yy-MM-dd</option>
<option value="yyyy/MM/dd hh:mm:ss">yyyy/MM/dd hh:mm:ss</option>
<option value="yyyy-MM-dd hh:mm:ss">yyyy-MM-dd hh:mm:ss</option>
<option value="yy/MM/dd hh:mm:ss">yy/MM/dd hh:mm:ss</option>
<option value="yy-MM-dd hh:mm:ss">yy-MM-dd hh:mm:ss</option>
<option value="hh:mm:ss">hh:mm:ss</option>
<option value="hh:mm">hh:mm</option>
</select>
<input type="text" name="aa" size="20"><br>
<input type="button" name="log1" value="Submit" onclick="checkDate()">
</form>
分享到:
相关推荐
对于从C#返回的日期字段,当进行JSON序列化后,在前台JS里显示的并不是真正的日期,这让我们感觉很不爽,我们不可能为了这东西,把所有日期字段都变成string吧,所以,找了一个JS的扩展方法,来实现这个功能 ...
javascript 精确计算、日期处理、金额格式化
支持多种日期和时间格式处理的和转换JS类库,详细查看文件内部传参
Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化、日期解析等功能。它支持在浏览器和NodeJS两种环境中运行。此类库能够将给定的任意日期转换成多种不同的格式,具有强大的日期计算功能,...
大家在日常开发的时候经常要用到日期格式的处理,下面这篇文章主要给大家介绍了js中常规日期格式处理、月历渲染及倒计时函数,有需要的朋友可以参考借鉴,下面来一起看看吧。
js处理java后台传过来的date对象并转换成指定格式的字符串,亲测可用
moment.js 主要用于时间格式处理 免于自己编写格式化时间参数 日,周,月时间格式化处理 日,周,月时间格式化处理 日,周,月时间格式化处理
http://www.cnblogs.com/GuominQiu 代码如下: //————————————————————————— //判断日期格式是否正确 //返回值是错误信息, 无错误信息即表示合法日期字符串 function isDateString(strDate...
Moment.js是JavaScript 日期处理类库。该文档涵盖了Moment.js处理时间的基本格式。
js 日期处理工具类,实现了日期的转换,日期格式: 30分钟前,16:20,昨天 11:11、11-17 10:10,等格式。
js东8区日期处理两种方法; 例:'/Date(1333245600000+0800)/' 返回2012-04-01
Luxon是一个用JavaScript处理日期和时间的实验库
JS时间格式化,JS两个时间差,JS当前日期的昨天明天 ,JS当前日期周几
moment.js 时间日期处理详解 周一 至 周日 时间格式化转化 (Y --- 年 M --- 月 D--- 天) var timeNow = new Date()// 当前时间 var weekOfday = moment(timeNow).format('E'); // 计算今天是这周第几天 var...
js自带的基本时间处理函数,可以完成部分简单的时间处理。有需求的也许对你有点用处。
JavaScript日期处理插件
dateformat.js 是一个非常简洁、轻量级、不到 5kb 的很简洁的 Javascript 库, 它是一个时间的处理工具类。
javaScript已经处理好的日期格式,用于文本框的输入,下载后,要先阅读readme.txt文件。
Day.js是一个轻量的处理时间和日期的JavaScript库,和Moment.js的API设计保持完全一样. 如果您曾经用过Moment.js, 那么您已经知道如何使用Day.js。
javaScript异常处理文档,当遇到JavaScript等异常问题时可翻阅本文档寻找答案