windows下系统移植到linux下出现的问题

Posted on 2016-08-15 10:33  我编程我快乐  阅读(256)  评论(0编辑  收藏  举报

今天遇到了一个之前没有遇到的问题,记录一下。

我们是在windows下进行开发的,最终系统是部署在linux服务器上。

在windows一切正常,但是部署到linux下时,有些功能不能用了。通过log查看。发现在日期转换的时候出了问题。

旧代码的实现:

public static Date StringToDate(String str){
        Date date = null;
        DateFormat format = DateFormat.getDateInstance();
        if(str != null && str != ""){
            try {
                date = format.parse(str);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return date;
    }

上述代码在windows上没有问题,但是在linux下执行就出现了日期解析异常,一度开始怀疑java跨平台还是有点缺陷。。。后来各种查找资料,终于找到了原因,是自己的代码有问题

原因是因为DateFormat.getDateInstance();该方法依赖于系统本地的日期格式,但是windows的日期格式和linux的日期格式不同,所以在linux下解析出现异常。

解决方法是换一种方式来进行日期解析,新代码如下:

public static Date StringToDate1(String str){
        Date date = null;
        DateFormat format = null;
        if(str != null && str != ""){
            try {
                if(str.trim().length()>12){
                    format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                }else {
                    format = new SimpleDateFormat("yyyy-MM-dd");
                }
                date = format.parse(str);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return date;
    }

改过之后,问题解决

Copyright © 2024 我编程我快乐
Powered by .NET 9.0 on Kubernetes