Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

报错:Unparseable date: “2020-08-2023:59:59“

DateFormat.parse时间计算中遇到的问题

在做一个给Redis中 key 设置过期时间,在写 DateUtil 的时候,计算时间的时候,因为要判断 当天有效。 通过 new Date() (SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
return sdf.format(new Date());)
获取时间再加上今天时间时 " 23:59:59" 。
如果 Date date=sdf.parse(getDate()+" 23:59:59") 。 “23:59:59” 时间前面没有空格,在测试的时候会报错

一个简单的测试

public static void main(String[] args) {
    System.out.println(getSeconds()/60/60);
}

java.text.ParseException: Unparseable date: “2020-08-2023:59:59”
at java.text.DateFormat.parse(DateFormat.java:366)
at com.laoxing.robin.common.util.DateUtil.getSeconds(DateUtil.java:22)
at com.laoxing.robin.common.util.DateUtil.main(DateUtil.java:32)
0

前面加了空格就没问题了

 Date date=sdf.parse(getDate()+" 23:59:59");

结果 21 当前时间 2:30
不清楚为什么。网上搜也没搜到要的答案。有没有大佬解答一下啊。。。

package com.zyj.robin.common.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: zyj
 * @Date: 2020/8/201:35
 */
public class DateUtil {
    //获取今天的日期
    public static String getDate(){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(new Date());
    }
    //查询今日剩下的秒数
    public static int getSeconds(){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            //(getDate()+"23:59:59") ," 23:59:59"前面空格掉会报错
            Date date=sdf.parse(getDate()+" 23:59:59");
            return (int)(date.getTime()-System.currentTimeMillis())/1000;
            //return (int)(date.getTime()-new Date().getTime())/1000; // 也行
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;//异常抛 0
    }

    public static void main(String[] args) {
        System.out.println(getSeconds()/60/60);
    }
}

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: git比较远程仓库和本地仓库之间的差异

下一篇: Python中lambda函数的理解与应用

精华推荐