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时间类型对应关系   

                  2、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中关于时间的知识汇总

友情链接:1、mysql中datetime、date、time、timestamp的区别

                 2、mysql中时间转换函数和时间计算函数

                 3、mysql中关于时间的常用函数

posted @ 2017-08-17 12:16  好困啊  阅读(975)  评论(0编辑  收藏  举报