问题提出
最近在做一个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中关于时间的知识汇总