mysql和java 中关于时间的处理详解
问题提出
最近在做一个javaweb系统时,需要从Excel表格中导入日期(yyyy-MM-dd)、时长(25:40:40)、时间(hh:mm:ss)等信息,还需要向数据库存储时间(yyyy-MM-dd hh:mm:ss)信息。
遇到如下问题:
1、如果Excel默认格式存储时长信息时,在导入信息时,用java类获取时,会被系统类默认识别成时间信息,然后造成时间变化(例如25:40:40被解读成01:40:40)
我觉得这算是java的一个小缺陷。
2、java中时间和mysql中时间处理的转换问题
解决方案
1、我是通过设置Excel表格中单元格格式为文本格式,然后java获取到String类型的值之后,直接存入数据库
2、熟悉java和mysql中关于时间的基础知识,并编写合理的时间转换函数
java中关于时间的知识汇总
友情链接:1、java与mysql时间类型对应关系
下面是我总结的一些关于时间转换的方法,可以直接使用。
1 package com.util; 2 3 import java.sql.Date; 4 import java.sql.Time; 5 import java.text.SimpleDateFormat; 6 import java.util.Calendar; 7 8 /** 9 * 与日期/时间有关的常用操作 10 * @author ccs 11 * 12 */ 13 public class DateUtil { 14 15 /** 16 * 将java.sql.Date类型的日期转换成字符串 17 * @param date java.sql.Date类型的日期,格式为yyyy-MM-dd 18 * @return 表示日期的字符串 19 */ 20 public static String DateToString(Date date){ 21 return date.toString(); 22 } 23 24 /** 25 * 将java.sql.Time类型的日期转换成字符串 26 * @param time java.sql.Time类型的时间,格式为hh:mm:ss 27 * @return 表示时间的字符串 28 */ 29 public static String TimeToString(Time time){ 30 return time.toString(); 31 } 32 33 /** 34 * 将字符串表示的日期转换成java.sql.Date类型 35 * @param strDate 表示日期的字符串,格式为yyyy-MM-dd 36 * @return java.sql.Date类型的日期 37 */ 38 public static Date StringToDate(String strDate){ 39 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 40 java.util.Date util_date = null; 41 try { 42 //把字符串strDate格式化成java.util.Date类型 43 util_date = format.parse(strDate); 44 } catch (Exception e) { 45 e.printStackTrace(); 46 } 47 //返回距离1970-01-01的毫秒数 48 long count = util_date.getTime(); 49 //再从java.util.Date类型转换成java.sql.Date类型 50 java.sql.Date sql_date = new java.sql.Date(count); 51 return sql_date; 52 } 53 54 /** 55 * 将字符串表示的时间转换成java.sql.Time类型 56 * @param strTime 表示日期的字符串,格式为hh:mm:ss 57 * @return java.sql.Time类型的时间 58 */ 59 public static Time StringToTime(String strTime){ 60 SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss"); 61 java.util.Date util_date = null; 62 try { 63 //截取后八位,表示时分秒 64 strTime = strTime.substring(strTime.length()-8,strTime.length()); 65 //把字符串strTime格式化成java.util.Date类型 66 //######################################################################### 67 //此转换方法不可行,原因是12:10:10会被转换成00:10:10 68 //######################################################################### 69 util_date = format.parse(strTime); 70 } catch (Exception e) { 71 e.printStackTrace(); 72 } 73 //返回距离1970-01-01的毫秒数 74 long count = util_date.getTime(); 75 //再从java.util.Date类型转换成java.sql.Time类型 76 java.sql.Time sql_time = new java.sql.Time(count); 77 return sql_time; 78 } 79 80 /** 81 * 获取当前系统时间,并格式化 82 * @return 83 */ 84 public static Date getNowDate(){ 85 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 86 java.util.Date date=null; 87 try { 88 //获取当前系统时间,并格式化,转换成Date类型 89 date= sdf.parse(sdf.format(new java.util.Date())); 90 } catch (Exception e) { 91 e.printStackTrace(); 92 } 93 long count = date.getTime(); 94 java.sql.Date sql_date = new java.sql.Date(count); 95 return sql_date; 96 } 97 98 /** 99 * 获取当前日期的下一天的日期 100 * @param nowDate 当前日期 101 * @return 102 */ 103 public static String getNextDay(String nowDate){ 104 //获取日历的实例 105 Calendar c = Calendar.getInstance(); 106 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 107 java.util.Date date=null; 108 try { 109 //获取当前系统时间,并格式化,转换成Date类型 110 date= sdf.parse(nowDate); 111 } catch (Exception e) { 112 e.printStackTrace(); 113 } 114 c.setTime(date); 115 int day = c.get(Calendar.DATE); 116 c.set(Calendar.DATE, day+1); 117 String nextDay = sdf.format(c.getTime()); 118 return nextDay; 119 } 120 121 }
mysql中关于时间的知识汇总