>关于日期处理
出现这种问题,在Java中通常去检查两个地方:
一个是数据库中,to_date() ,是否出现不对应,数据溢出的问题 ;
另一个就是程序中是否存在DateFormat,等类似的传入日期的地方,取值是否对应;
ora01830 日期格式图片在转换整个、
>补充
顺便记个日期有关的常用代码:计算两个时间中间间隔的天数问题
常用的有两种思路,一种是直接计算两个时间点的毫秒差值,除以每天的毫秒数,来获取天数;
另一种,是使用Calendar计算日期天数上的差值,再补齐年份差对应的天数(闰年366/普通年份365),这种处理方式也有问题:跨多年的两个日期,对于中间年份来说根据平/润年补齐天数是没有问题的,但是对于开头年份和结束年份来说,如果这两年的年份类型不同,就会出现问题;
public class Testxxxx {public static void main(String[] args) throws ParseException {DateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date endDate = format.parse("2021-01-01");Date startDate = format.parse("2020-12-31");int betweenTwoDates = betweenTwoDates(startDate, endDate);// 根据Calendar计算方式System.out.println(betweenTwoDates);// 根据毫秒差计算方式System.out.println((endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000));}public static int betweenTwoDates(Date startDate, Date endDate) {Calendar startC = Calendar.getInstance();Calendar endC = Calendar.getInstance();startC.setTime(startDate);endC.setTime(endDate);int startDay = startC.get(Calendar.DAY_OF_YEAR);int endDay = endC.get(Calendar.DAY_OF_YEAR);int betweenYear = endC.get(Calendar.YEAR) - startC.get(Calendar.YEAR);int distance = 0;for (int i = 0; i < betweenYear; i++) {startC.set(Calendar.YEAR, startC.get(Calendar.YEAR) + 1);if (startC.get(Calendar.YEAR) % 4 == 0 && startC.get(Calendar.YEAR) % 100 != 0|| startC.get(Calendar.YEAR) % 400 == 0) {distance += 366;} else {distance += 365;}}int betweenDays = distance + (endDay - startDay);return betweenDays;}
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
同时也捎带提醒一句,如果你发现你 hook 系统的方法不起作用的时候,或许可以检查一下你项目里引入的第三方框架里是否也 hook 了和你一样的" alt="从使用 KVO 监听 readonly 属性说起">
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态