lunar-java icon indicating copy to clipboard operation
lunar-java copied to clipboard

Lunar阳历日期转换出错,算法不对

Open a316375 opened this issue 2 years ago • 4 comments

我明明设置一个【1986-9-1 00:02:02 】的数据,并且转换成为一个13位的时间戳, 根据时间戳导入后-转换后竟然变成【1986-08-31 23:02:02 】

这个时间戳计算差了1天,连日期都改变了 //实测 Andriod Java 运行日期计算错误,时间戳转换日期出错

//设置一个1986-9-1 的数据 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR,1986); calendar.set(Calendar.MONTH,8); calendar.set(Calendar.DAY_OF_MONTH,1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 2); calendar.set(Calendar.SECOND, 2);

                 //SimpleDateFormat来输出规范的字符串 拿到时间戳
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
                        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));  //上海,对应正八区
                        String format = sdf.format(calendar.getTime());//拿到时间戳
                        System.out.println("Calendar 1986-9-1 转换后时间戳"+format+calendar.getTime().getTime() );

                     
                        System.out.println("Lunar阳历日期:"+ Solar.fromDate(new Date(calendar.getTime().getTime())).getLunar().getSolar().toFullString());
                      

打印结果 Lunar阳历日期:1986-08-31 23:02:02 星期日 处女座 我明明设置一个【1986-9-1 00:02:02 】的数据,并且转换成为一个时间戳, 导入后-转换后竟然变成【1986-08-31 23:02:02 】

a316375 avatar Jul 31 '22 08:07 a316375

Calendar要设置时区。

6tail avatar Aug 04 '22 13:08 6tail

https://github.com/6tail/lunar-java/blob/1aefcdcf0c51ff5248caa9a73abd8c220fea273a/src/main/java/com/nlf/calendar/Solar.java#L198 用这个方法不就不用转换了

xuanyunhui avatar Aug 05 '22 01:08 xuanyunhui

Calendar和Date都需要注意时区。

6tail avatar Nov 08 '22 12:11 6tail

刚开始我也以为不对, 翻看了文档才发现是自己使用方法有问题, 目前验证出来的都没有问题, 我只能说大佬太牛皮了, 请收下我的膝盖, 这些质疑有错误的issues我觉得可以关了

patience00 avatar Apr 17 '24 01:04 patience00