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条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退