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

为什么我用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条)

报告相同问题?

悬赏问题

  • ¥15 加氢站氢负荷数据集来源
  • ¥15 umi接入sentry遇到问题
  • ¥15 HBuilderX打包H5网页,扫码模块无法使用
  • ¥15 Javascript跳转页面后,无法执行后面代码,如何解决?
  • ¥15 echarts绘制图表
  • ¥15 请教两个关于高德地图定位不准的技术问题
  • ¥15 根据企业名称 对照两个文件 样本筛选/匹配
  • ¥15 Linux环境下CA证书更新问题
  • ¥15 sqlserver语句提取结果以外数据
  • ¥60 微信小程序如何上传QQ聊天文件