关于一个时间格式的验证(在线等!急!!!)

Frightingzhouxf 2009-06-01 03:15:21
时间格式要是这种:”2009-06-02 10:11:21“,我写的是js,直接在文本框中选择的,可以修改,但要控制格式。怎样判断时间格式呢?????
...全文
250 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
皓月明 2009-06-02
  • 打赏
  • 举报
回复
我感觉楼主还是google一下吧,上边很多答案的
mqc507 2009-06-02
  • 打赏
  • 举报
回复
m`regex
chen_ya_ping 2009-06-02
  • 打赏
  • 举报
回复
学习
dl_wang 2009-06-01
  • 打赏
  • 举报
回复
mark
dl591944556 2009-06-01
  • 打赏
  • 举报
回复
时间控制

支持4楼说法
bsetsail 2009-06-01
  • 打赏
  • 举报
回复
function trim(str)
{
if (!str) return "";
return str.replace(/(^\s*)|(\s*$)/g, "");
}

function CheckDate(str)
{
str = trim(str);
var reg1 = /^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r1 = str.match(reg1);
var reg2 = /^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r2 = str.match(reg2);
var reg3 = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
var r3 = str.match(reg3);
var reg4 = /^(\d{4})\/(\d{1,2})\/(\d{1,2})$/;
var r4 = str.match(reg4);

if(r1==null && r2==null && r3==null && r4==null) return false;
str = str.replace(/\//g, "-");
var r, d;
if(r1!=null || r2!=null)
r = str.match(reg1);
else
r = str.match(reg3);
r[2] = r[2] - 1;
for(var i=1; i<r.length; i++)
{
r[i] = parseInt(r[i]);
}
if(r.length == 4)
d = new Date(r[1], r[2], r[3]);
else
{
d = new Date(r[1], r[2], r[3], r[4], r[5], r[6]);
if(d.getHours() != r[4]) return false;
if(d.getMinutes() != r[5]) return false;
if(d.getSeconds() != r[6]) return false;
}
if(d.getFullYear() != r[1]) return false;
if(d.getMonth() != r[2]) return false;
if(d.getDate() != r[3]) return false;
return true;
}
wangchao813 2009-06-01
  • 打赏
  • 举报
回复
Select CONVERT(varchar(100), GETDATE(), 20)
bl_song 2009-06-01
  • 打赏
  • 举报
回复
赞成![Quote=引用 7 楼 Rainsome 的回复:]
JScript code
/*
// Regex Example in JavaScript
// Rainsome Studio
// 2009-06-01 in Shanghai
*/
<!--//
function ChkDateTimeFormat(strDT)
{
var regex = /^(\d{4})\-((?:1[0-2])|(?:0(?!0)\d))\-((?:3[01])|(?:[12]\d)|(?:0(?!0)\d)) (?:(?:2[0-3])|(?:[01]\d))(\:[0-5]\d){2}$/i;
if(!regex.test(strDT))return false;

[/Quote]
lgaimin 2009-06-01
  • 打赏
  • 举报
回复
没得我说的了...楼上说完了...
rainsome 2009-06-01
  • 打赏
  • 举报
回复

/*
// Regex Example in JavaScript
// Rainsome Studio
// 2009-06-01 in Shanghai
*/
<!--//
function ChkDateTimeFormat(strDT)
{
var regex = /^(\d{4})\-((?:1[0-2])|(?:0(?!0)\d))\-((?:3[01])|(?:[12]\d)|(?:0(?!0)\d)) (?:(?:2[0-3])|(?:[01]\d))(\:[0-5]\d){2}$/i;
if(!regex.test(strDT))return false;
var year=RegExp.$1-0,month=RegExp.$2-0,day=RegExp.$3-0;
var blResult=true;
switch(month){
case 1:;case 3:;case 5:;case 7:;case 8:;case 10:;case 12:
if(day>31) blResult=false;
break;
case 4:;case 6:;case 9:;case 11:
if(day>30) blResult=false;
break;
case 2:
if(year%400!=0&&year%4!=0){
if(day>28) blResult=false;
}else{
if(day>29) blResult=false;
}
break;
}
return blResult;
}
bsetsail 2009-06-01
  • 打赏
  • 举报
回复
function CheckDate(str)
{
str = trim(str);
var reg1 = /^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r1 = str.match(reg1);
var reg2 = /^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r2 = str.match(reg2);
var reg3 = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
var r3 = str.match(reg3);
var reg4 = /^(\d{4})\/(\d{1,2})\/(\d{1,2})$/;
var r4 = str.match(reg4);

if(r1==null && r2==null && r3==null && r4==null) return false;
str = str.replace(/\//g, "-");
var r, d;
if(r1!=null || r2!=null)
r = str.match(reg1);
else
r = str.match(reg3);
r[2] = r[2] - 1;
for(var i=1; i<r.length; i++)
{
r[i] = parseInt(r[i]);
}
if(r.length == 4)
d = new Date(r[1], r[2], r[3]);
else
{
d = new Date(r[1], r[2], r[3], r[4], r[5], r[6]);
if(d.getHours() != r[4]) return false;
if(d.getMinutes() != r[5]) return false;
if(d.getSeconds() != r[6]) return false;
}
if(d.getFullYear() != r[1]) return false;
if(d.getMonth() != r[2]) return false;
if(d.getDate() != r[3]) return false;
return true;
}
「已注销」 2009-06-01
  • 打赏
  • 举报
回复
学习了
xcjwxx 2009-06-01
  • 打赏
  • 举报
回复
function DateUtil(){}
/**
*功能:格式化时间
*示例:DateUtil.Format("yyyy/MM/dd","Thu Nov 9 20:30:37 UTC+0800 2006 ");
*返回:2006/11/09
*/
DateUtil.Format=function(fmtCode,date){
var result,d,arr_d;

var patrn_now_1=/^y{4}-M{2}-d{2}\sh{2}:m{2}:s{2}$/;
var patrn_now_11=/^y{4}-M{1,2}-d{1,2}\sh{1,2}:m{1,2}:s{1,2}$/;

var patrn_now_2=/^y{4}\/M{2}\/d{2}\sh{2}:m{2}:s{2}$/;
var patrn_now_22=/^y{4}\/M{1,2}\/d{1,2}\sh{1,2}:m{1,2}:s{1,2}$/;

var patrn_now_3=/^y{4}年M{2}月d{2}日\sh{2}时m{2}分s{2}秒$/;
var patrn_now_33=/^y{4}年M{1,2}月d{1,2}日\sh{1,2}时m{1,2}分s{1,2}秒$/;

var patrn_date_1=/^y{4}-M{2}-d{2}$/;
var patrn_date_11=/^y{4}-M{1,2}-d{1,2}$/;

var patrn_date_2=/^y{4}\/M{2}\/d{2}$/;
var patrn_date_22=/^y{4}\/M{1,2}\/d{1,2}$/;

var patrn_date_3=/^y{4}年M{2}月d{2}日$/;
var patrn_date_33=/^y{4}年M{1,2}月d{1,2}日$/;

var patrn_time_1=/^h{2}:m{2}:s{2}$/;
var patrn_time_11=/^h{1,2}:m{1,2}:s{1,2}$/;
var patrn_time_2=/^h{2}时m{2}分s{2}秒$/;
var patrn_time_22=/^h{1,2}时m{1,2}分s{1,2}秒$/;

if(!fmtCode){fmtCode="yyyy/MM/dd hh:mm:ss";}
if(date){
d=new Date(date);
if(isNaN(d)){
msgBox("时间参数非法\n正确的时间示例:\nThu Nov 9 20:30:37 UTC+0800 2006\n或\n2006/ 10/17");
return;}
}else{
d=new Date();
}

if(patrn_now_1.test(fmtCode))
{
arr_d=splitDate(d,true);
result=arr_d.yyyy+"-"+arr_d.MM+"-"+arr_d.dd+" "+arr_d.hh+":"+arr_d.mm+":"+arr_d.ss;
}
else if(patrn_now_11.test(fmtCode))
{
arr_d=splitDate(d);
result=arr_d.yyyy+"-"+arr_d.MM+"-"+arr_d.dd+" "+arr_d.hh+":"+arr_d.mm+":"+arr_d.ss;
}
else if(patrn_now_2.test(fmtCode))
{
arr_d=splitDate(d,true);
result=arr_d.yyyy+"/"+arr_d.MM+"/"+arr_d.dd+" "+arr_d.hh+":"+arr_d.mm+":"+arr_d.ss;
}
else if(patrn_now_22.test(fmtCode))
{
arr_d=splitDate(d);
result=arr_d.yyyy+"/"+arr_d.MM+"/"+arr_d.dd+" "+arr_d.hh+":"+arr_d.mm+":"+arr_d.ss;
}
else if(patrn_now_3.test(fmtCode))
{
arr_d=splitDate(d,true);
result=arr_d.yyyy+"年"+arr_d.MM+"月"+arr_d.dd+"日"+" "+arr_d.hh+"时"+arr_d.mm+"分"+arr_d.ss+"秒";
}
else if(patrn_now_33.test(fmtCode))
{
arr_d=splitDate(d);
result=arr_d.yyyy+"年"+arr_d.MM+"月"+arr_d.dd+"日"+" "+arr_d.hh+"时"+arr_d.mm+"分"+arr_d.ss+"秒";
}

else if(patrn_date_1.test(fmtCode))
{
arr_d=splitDate(d,true);
result=arr_d.yyyy+"-"+arr_d.MM+"-"+arr_d.dd;
}
else if(patrn_date_11.test(fmtCode))
{
arr_d=splitDate(d);
result=arr_d.yyyy+"-"+arr_d.MM+"-"+arr_d.dd;
}
else if(patrn_date_2.test(fmtCode))
{
arr_d=splitDate(d,true);
result=arr_d.yyyy+"/"+arr_d.MM+"/"+arr_d.dd;
}
else if(patrn_date_22.test(fmtCode))
{
arr_d=splitDate(d);
result=arr_d.yyyy+"/"+arr_d.MM+"/"+arr_d.dd;
}
else if(patrn_date_3.test(fmtCode))
{
arr_d=splitDate(d,true);
result=arr_d.yyyy+"年"+arr_d.MM+"月"+arr_d.dd+"日";
}
else if(patrn_date_33.test(fmtCode))
{
arr_d=splitDate(d);
result=arr_d.yyyy+"年"+arr_d.MM+"月"+arr_d.dd+"日";
}
else if(patrn_time_1.test(fmtCode)){
arr_d=splitDate(d,true);
result=arr_d.hh+":"+arr_d.mm+":"+arr_d.ss;
}
else if(patrn_time_11.test(fmtCode)){
arr_d=splitDate(d);
result=arr_d.hh+":"+arr_d.mm+":"+arr_d.ss;
}
else if(patrn_time_2.test(fmtCode)){
arr_d=splitDate(d,true);
result=arr_d.hh+"时"+arr_d.mm+"分"+arr_d.ss+"秒";
}
else if(patrn_time_22.test(fmtCode)){
arr_d=splitDate(d);
result=arr_d.hh+"时"+arr_d.mm+"分"+arr_d.ss+"秒";
}
else{
msgBox("没有匹配的时间格式!");
return;
}

return result;
};
function splitDate(d,isZero){
var yyyy,MM,dd,hh,mm,ss;
if(isZero){
yyyy=d.getYear();
MM=(d.getMonth()+1)<10?"0"+(d.getMonth()+1):d.getMonth()+1;
dd=d.getDate()<10?"0"+d.getDate():d.getDate();
hh=d.getHours()<10?"0"+d.getHours():d.getHours();
mm=d.getMinutes()<10?"0"+d.getMinutes():d.getMinutes();
ss=d.getSeconds()<10?"0"+d.getSeconds():d.getSeconds();
}else{
yyyy=d.getYear();
MM=d.getMonth()+1;
dd=d.getDate();
hh=d.getHours();
mm=d.getMinutes();
ss=d.getSeconds();
}
return {"yyyy":yyyy,"MM":MM,"dd":dd,"hh":hh,"mm":mm,"ss":ss};
}
function msgBox(msg){
window.alert(msg);
}
飞天鹰 2009-06-01
  • 打赏
  • 举报
回复
2楼的不错
Frightingzhouxf 2009-06-01
  • 打赏
  • 举报
回复
有没得简单的方法呢?
xingzhiasa 2009-06-01
  • 打赏
  • 举报
回复

// This code example demonstrates the String.Format() method.
// Formatting for this example uses the "en-US" culture.

using System;
class Sample
{
enum Color {Yellow = 1, Blue, Green};
static DateTime thisDate = DateTime.Now;

public static void Main()
{
// Store the output of the String.Format method in a string.
string s = "";

Console.Clear();

// Format a negative integer or floating-point number in various ways.
Console.WriteLine("Standard Numeric Format Specifiers");
s = String.Format(
"(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
-123, -123.45f);
Console.WriteLine(s);

// Format the current date in various ways.
Console.WriteLine("Standard DateTime Format Specifiers");
s = String.Format(
"(d) Short date: . . . . . . . {0:d}\n" +
"(D) Long date:. . . . . . . . {0:D}\n" +
"(t) Short time: . . . . . . . {0:t}\n" +
"(T) Long time:. . . . . . . . {0:T}\n" +
"(f) Full date/short time: . . {0:f}\n" +
"(F) Full date/long time:. . . {0:F}\n" +
"(g) General date/short time:. {0:g}\n" +
"(G) General date/long time: . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(M) Month:. . . . . . . . . . {0:M}\n" +
"(R) RFC1123:. . . . . . . . . {0:R}\n" +
"(s) Sortable: . . . . . . . . {0:s}\n" +
"(u) Universal sortable: . . . {0:u} (invariant)\n" +
"(U) Universal sortable: . . . {0:U}\n" +
"(Y) Year: . . . . . . . . . . {0:Y}\n",
thisDate);
Console.WriteLine(s);

// Format a Color enumeration value in various ways.
Console.WriteLine("Standard Enumeration Format Specifiers");
s = String.Format(
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(F) Flags:. . . . . . . . . . {0:F} (flags or integer)\n" +
"(D) Decimal number: . . . . . {0:D}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
Color.Green);
Console.WriteLine(s);
}
}
/*
This code example produces the following results:

Standard Numeric Format Specifiers
(C) Currency: . . . . . . . . ($123.00)
(D) Decimal:. . . . . . . . . -123
(E) Scientific: . . . . . . . -1.234500E+002
(F) Fixed point:. . . . . . . -123.45
(G) General:. . . . . . . . . -123
(default):. . . . . . . . -123 (default = 'G')
(N) Number: . . . . . . . . . -123.00
(P) Percent:. . . . . . . . . -12,345.00 %
(R) Round-trip: . . . . . . . -123.45
(X) Hexadecimal:. . . . . . . FFFFFF85

Standard DateTime Format Specifiers
(d) Short date: . . . . . . . 6/26/2004
(D) Long date:. . . . . . . . Saturday, June 26, 2004
(t) Short time: . . . . . . . 8:11 PM
(T) Long time:. . . . . . . . 8:11:04 PM
(f) Full date/short time: . . Saturday, June 26, 2004 8:11 PM
(F) Full date/long time:. . . Saturday, June 26, 2004 8:11:04 PM
(g) General date/short time:. 6/26/2004 8:11 PM
(G) General date/long time: . 6/26/2004 8:11:04 PM
(default):. . . . . . . . 6/26/2004 8:11:04 PM (default = 'G')
(M) Month:. . . . . . . . . . June 26
(R) RFC1123:. . . . . . . . . Sat, 26 Jun 2004 20:11:04 GMT
(s) Sortable: . . . . . . . . 2004-06-26T20:11:04
(u) Universal sortable: . . . 2004-06-26 20:11:04Z (invariant)
(U) Universal sortable: . . . Sunday, June 27, 2004 3:11:04 AM
(Y) Year: . . . . . . . . . . June, 2004

Standard Enumeration Format Specifiers
(G) General:. . . . . . . . . Green
(default):. . . . . . . . Green (default = 'G')
(F) Flags:. . . . . . . . . . Green (flags or integer)
(D) Decimal number: . . . . . 3
(X) Hexadecimal:. . . . . . . 00000003

*/

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧