csdn_sqj 2019-12-15 16:13 采纳率: 40%
浏览 672
已采纳

为什么我用cookie保存的日期时间(Date)不对呢?

输出结果:
图片说明

++++++++++++++++++++++++++
源码(这里的排版有问题,不知道怎么调。。。):
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置响应的消息体的数据格式以及编码(为了支持中文)
resp.setContentType("text/html;charset=utf-8");
// 定义一个变量判断是否找到LastTime这个cookie
boolean lasttime = false;
// 1、获取所有cookie
Cookie[] cookies = req.getCookies();
// 2、遍历数组,并且找出其中 name="LastTime" 的键值对
if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
// 找出 LastTime
String name = cookie.getName();
if("LastTime".equals(name)){

                // 如果匹配出来,说明不是第一次访问
                lasttime = true;

                // 设置cookie的value
                // 获取当前时间的字符串,重新设置cookie的值
                Date date = new Date();
                // 设置 日期的输出格式
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日-hh:mm:ss");
                String new_value = sdf.format(date);

                cookie.setValue(new_value);
                // 设置cookie的存活时间
                cookie.setMaxAge(60*60*24);
                // 覆盖原来的value
                resp.addCookie(cookie);

                String value = cookie.getValue();

                // 取出数据
                resp.getWriter().write("<h1>欢迎回来,您上一次访问的时间是:"+value+"</h1>");

                // 找到了就不用再找了
                break;
            }
        }
    }
    if(cookies == null || cookies.length == 0 || lasttime == false){
        // 以上条件都成立,说明是第一次访问

        // 获取当前时间的字符串,重新设置cookie的值
        Date date = new Date();
        // 设置 日期的输出格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日-hh:mm:ss");
        String new_value = sdf.format(date);

        Cookie cookie = new Cookie("LastTime", new_value);
        // 设置cookie的存活时间
        cookie.setMaxAge(60*60*24);
        // 覆盖原来的value
        resp.addCookie(cookie);

        resp.getWriter().write("<h1>您好,欢迎你首次访问</h1>");
    }

}

    ++++++++++++++++++++++++++
  • 写回答

4条回答 默认 最新

  • 「已注销」 2019-12-15 18:25
    关注

    小写m表示分钟,大写M表示月份

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站