这是Linux中Java.Calendar中的错误吗?年未更新
发布时间:2020-12-14 02:14:14 所属栏目:Linux 来源:网络整理
导读:我在运行 Linux的服务器上发生了一些奇怪的事情,而执行相同代码的Windows机器正常运行. 它发生在以下代码中: public static final SimpleDateFormat sqlDateFormat = new SimpleDateFormat("Y-M-d"); Calendar cal = Calendar.getInstance(); String now =
我在运行
Linux的服务器上发生了一些奇怪的事情,而执行相同代码的Windows机器正常运行.
它发生在以下代码中: public static final SimpleDateFormat sqlDateFormat = new SimpleDateFormat("Y-M-d"); Calendar cal = Calendar.getInstance(); String now = sqlDateFormat.format(cal.getTime()); System.out.println(now); cal.add(Calendar.DAY_OF_MONTH,-4); cal.set(Calendar.HOUR_OF_DAY,0); cal.set(Calendar.MINUTE,0); String trsh = sqlDateFormat.format(cal.getTime()); System.out.println(trsh); Windows机器上的输出运行: java version "1.7.0_07" Java(TM) SE Runtime Environment (build 1.7.0_07-b11) Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01,mixed mode) Output: 2014-01-02 2013-12-29 以上与预期结果相符. 运行的Linux机器上的输出: java version "1.8.0-ea" Java(TM) SE Runtime Environment (build 1.8.0-ea-b108) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50,mixed mode) Output: 2014-01-02 2014-12-29 这很奇怪不是吗?有什么好的解决方法吗? 解决方法
也许您已使用模式符号Y而不是y构建了格式对象. Y代表一周的年份,而不是正常的iso日历年.它依赖于语言环境,尤其取决于一周开始的时间.因此,Windows机器和Linux服务器上的区域设置可能会有所不同.请记住,java.util.Calendar也依赖于语言环境.
尝试新的SimpleDateFormat(“yyyy-MM-dd”); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |