javascript对日期格式为YYYY-MM-DD hh:mm:ss的合法性判定

本文提供了一个用于验证时间格式的JSP页面代码示例。该示例能够检查用户输入的时间是否符合标准格式,并针对不同月份及特殊年份(如闰年)的日期规则进行有效性校验。

最经做个小系统,刚好用到了,在网上搜也没找到合适的,就自己写了一个,这个直接粘贴过去就可以用!发在这里,不好的地方还希望大家指正!

文件名叫test.jsp就可以!

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
   
    <title>这是一个测试页面</title>
   
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

    <script language="javaScript">
    function mycheck(){
    if(Stime.starttime.value=="")
    {alert("请输入起始时间!");Stime.starttime.focus();return;}
    if(Stime.starttime.value!="")
    {
         var str=Stime.starttime.value;
      var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;       
                  var r = str.match(reg);
      if(r==null){alert("对不起,您输入的日期格式不正确!");Stime.starttime.focus();return;}    
      if(r[3]<1||r[3]>12){alert("月份必须介于1和12之间,请您重新输入!");Stime.starttime.focus();return;}//对月份进行判定
     
      //对日期进行判定
      if(r[3]==2&&r[1]%4==0)//闰年二月的日期的判定
      {
          if(r[4]<0||r[4]>29){alert(r[1]+"年2月的日期必须介于1和29之间,请您重新输入!");Stime.starttime.focus();return;}
      }
      if(r[3]==2&&r[1]%4!=0)//平年二月的日期的判定
      {
          if(r[4]<0||r[4]>28){alert(r[1]+"年2月的日期必须介于1和28之间,请您重新输入!");Stime.starttime.focus();return;}
      }
      if(r[3]<8&&r[3]%2==0)//4,6月日期的判定
      {
          if(r[4]<0||r[4]>30){alert(r[3]+"月的日期必须介于1和30之间,请您重新输入!");Stime.starttime.focus();return;}
      }
      if(r[3]<8&&r[3]%2!=0)//1、3、5、7月日期的判定
      {
          if(r[4]<0||r[4]>31){alert(r[3]+"月的日期必须介于1和31之间,请您重新输入!");Stime.starttime.focus();return;}
      }
      if(r[3]>=8&&r[3]%2==0)//8、10、12月日期的判定
      {
          if(r[4]<0||r[4]>31){alert(r[3]+"月的日期必须介于1和31之间,请您重新输入!");Stime.starttime.focus();return;}
      }
      if(r[3]>=8&&r[3]%2!=0)//9、11月日期的判定
      {
          if(r[4]<0||r[4]>30){alert(r[3]+"月的日期必须介于1和30之间,请您重新输入!");Stime.starttime.focus();return;}
      }
      //日期判定结束
     
      if(r[5]<0||r[5]>23){alert("小时数必须介于0和23之间,请您重新输入!");Stime.starttime.focus();return;}//对小时进行判断
      if(r[6]<0||r[6]>59){alert("分钟数必须介于0和59之间,请您重新输入!");Stime.starttime.focus();return;}//对分钟进行判断
      if(r[7]<0||r[7]>59){alert("秒数必须介于0和59之间,请您重新输入!");Stime.starttime.focus();return;}//对秒进行判断   
    }
    if(Stime.endtime.value=="")
    {alert("请输入截止时间!");Stime.endtime.focus();return;}
    Stime.submit();
   
    }
   
     </script>

<body>

   <h1 align="center">Hello 这是一个测试页面</h1>
   <form action="selectTime.jsp" name="Stime" method="post">

    <table width="620" border="0" align="center">
<tr>
<td><font face="幼圆"><span class="STYLE5">请输入时间:
   <input type="text" name="starttime" value="2009-6-03 11:23:19" />
</td>
<td><input type="button" name="next" value="查 询" onClick="mycheck()" />      &nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
</table>
    
</form>
</body>
</html>

import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LastAccessServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容的编码方式为UTF-8,防止发生乱码 response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); // 定义查找的cookie名称 String cookieName = "lastTime"; // 定义flag变量,判断是否是第一次访问 boolean flag = false; // 获取cookie Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie cookie : cookies) { String name = cookie.getName(); if (cookieName.equals(name)) { // 不是第一次访问 flag = true; // 获取cookie的value值 String value = cookie.getValue(); out.write("欢迎回来,您上次访问时间:" + value); // 设置新的时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH:mm:ss"); String currentTime = sdf.format(new Date()); cookie.setValue(currentTime); // 设置cookie的存活时间为一个月 cookie.setMaxAge(60 * 60 * 24 * 30); response.addCookie(cookie); break; } } } if (cookies == null || cookies.length == 0 || flag == false) { // 第一次访问 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH:mm:ss"); String currentTime = sdf.format(new Date()); Cookie cookie = new Cookie(cookieName, currentTime); cookie.setMaxAge(60 * 60 * 24 * 30); response.addCookie(cookie); out.write("您好,欢迎您首次访问"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } 完成课件中的 任务1:显示用户上次访问时间,理解算法逻辑,读懂每个语句的含义。运行成功后: (1)打开开发者工具F12,找到请求头中的Cookie:截屏显示; (2)换个浏览器访问该网站,还有lastTime这个Cookie吗? (3) 查看你的浏览器上面还有哪些Cookie?说说Cookie的安全性如何?
最新发布
11-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值