• 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中关于时间的常用函数

  • 相关阅读:
    剑指Offer_58_对称的二叉树
    剑指Offer_57_二叉树的下一个结点
    [Vue安装教程]十分钟学会vue 安装
    Flex布局做出自适应页面--语法和案例
    对JS中事件委托的理解
    JS代码中!!的用法,以及代码性能对比
    PHP 深度理解preg_quote()函数
    display的block、none、inline属性及解释
    div背景图片或颜色不显示的解决办法
    MYSQL优化_MYSQL分区技术[转载]
  • 原文地址:https://www.cnblogs.com/blog-ccs/p/7380754.html
Copyright © 2020-2023  润新知