java获取mysql时间格式化_Java与mysql的时间格式化问题,获取时间的上下午

Java与mysql的时间格式化问题,获取时间的上下午java

在项目中常常会遇到对时间进行格式化的问题,一次在对应用中发现,使用Java的SimpleDateFormat格式化时间,获取到的是上午,而使用mysql查询获取到的时间则是下午,致使二者不一致的问题,通过仔细检查,才发现这是一个特别小的问题,千万不要粗枝大叶啊。mysql

一、Java格式化时间:程序员

import java.text.SimpleDateFormat;

import java.util.Date;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class TestDateFormat {

public static void main(String[] args) {

System.out.println(timeformat("2018-03-14 12:10"));

}

public static String timeformat(String strDate){

String dateformat = "";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");

try {

Date date = sdf.parse(strDate);

System.out.println(date);

dateformat = new SimpleDateFormat("a").format(date);

} catch (ParseException | java.text.ParseException e) {

e.printStackTrace();

}

return dateformat;

}

}

打印的结果为:sql

Wed Mar 14 00:10:00 CST 2018

上午

apache

二、mysql时间格式化:spa

SELECT date_format( '2018-03-14 12:10', '%Y-%m-%d %p' ) date

查询结果为:code

2018-03-14 PM

orm

为何会出现二者不同的状况呢?仔细查看代码才发现,在把String的时间解析成date的时候,是使用的12小时制的时间(hh),结果就是12:10 就办成了 00:10 ,最后在格式化上下午的时候,程序就会认为它是上午了ci

解决方案:字符串

把Java代码中的的时间格式化修改一下就行了,

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

附Java,mysql时间格式化,指定字符串的含义表,供你们参考

一、Java

日期和时间模式

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可使用单引号 (') 引发来,以避免进行解释。"''" 表示单引号。全部其余字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

定义了如下模式字母(全部其余字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

字母   日期或时间元素        表示示例

G    Era 标志符                            TextAD

y    年Year1996; 96

M    年中的月份                            MonthJuly; Jul; 07

w    年中的周数                            Number27

W    月份中的周数        Number2

D    年中的天数                            Number189

d    月份中的天数        Number10

F    月份中的星期        Number2

E    星期中的天数        TextTuesday; Tue

a    Am/pm 标记            TextPM

H    一天中的小时数(0-23)Number0

k    一天中的小时数(1-24)Number24

K    am/pm 中的小时数(0-11)Number0

h    am/pm 中的小时数(1-12)Number12

m    小时中的分钟数Number30

s    分钟中的秒数Number55

S    毫秒数Number978

z    时区General time zonePacific Standard Time; PST; GMT-08:00

Z    时区RFC 822 time zone-0800

二、mysql

根据format 字符串安排date 值的格式。

如下说明符可用在 format 字符串中:

说明符 说明

%a     工做日的缩写名称  (Sun..Sat)

%b     月份的缩写名称  (Jan..Dec)

%c     月份,数字形式(0..12)

%D     带有英语后缀的该月日期  (0th, 1st, 2nd, 3rd, ...)

%d     该月日期, 数字形式 (00..31)

%e     该月日期, 数字形式(0..31)

%f     微秒 (000000..999999)

%H     小时(00..23)

%h     小时(01..12)

%I     小时 (01..12)

%i     分钟,数字形式 (00..59)

%j     一年中的天数 (001..366)

%k     小时 (0..23)

%l     小时 (1..12)

%M     月份名称 (January..December)

%m     月份, 数字形式 (00..12)

%p     上午(AM)或下午( PM)

%r     时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)

%S     秒 (00..59)

%s     秒 (00..59)

%T     时间 , 24小时制 (小时hh:分钟mm:秒数ss)

%U     周 (00..53), 其中周日为每周的第一天

%u     周 (00..53), 其中周一为每周的第一天

%V     周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用

%v     周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用

%W    工做日名称 (周日..周六)

%w     一周中的每日 (0=周日..6=周六)

%X     该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用

%x     该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用

%Y     年份, 数字形式,4位数

%y     年份, 数字形式 (2位数)

%% ‘%’文字字符

全部其它字符都被复制到结果中,无需做出解释。

注意, ‘%’字符要求在格式指定符以前。

月份和日期说明符的范围从零开始,缘由是 MySQL容许存储诸如 '2004-00-00'的不彻底日期.

感慨:大多数的状况下,咱们所认为的程序问题,都来源于程序员自己,工做决定了咱们必定要认真谨慎,这样就会少一些奇葩的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值