ORA-01830:日期格式图片在转换整个输入字符之前结束

 2023-09-17 阅读 13 评论 0

摘要:>关于日期处理 出现这种问题,在Java中通常去检查两个地方: 一个是数据库中,to_date() ,是否出现不对应,数据溢出的问题 ; 另一个就是程序中是否存在DateFormat,等类似的传入日期的地方,取值是否对应; ora0

>关于日期处理

出现这种问题,在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;}
}

 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/72526.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息