一朋友遇到一个bug:在数据库查是没有问题的,但是在后台查的时候没查出来,传递过去的字段都是正确的,就是不知道为什么没查出来。
我看了一下代码,没发现有什么不一样,开始debug,发现确实他在使用一个时间字段在数据库查的时候,用的“yyyy-MM-ss”格式,但是后台传过来的时间字段值,是日期的毫秒值,这样子肯定查不到啦。
关于时间的 String与 Date 、 Long 与Date 类型之间的转换
-
Date类型转为Long类型(毫秒值)
try {
Date d = new SimpleDateFormat("yyyy-MM-ss HH:mm:ss").parse("2020-04-01 00:00:00");
long time = d.getTime();
System.out.println("时间:"+time);
} catch (ParseException e) {
e.printStackTrace();
}
结果:输出从 1970 年 1 月 1 日 00:00:00 GMT)以来到2020年04月01日00:00:00 的毫秒值
-
Long类型(毫秒值)转为Date类型
使用构造函数:public Date(long date)。
分配 Date
对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Date date = new Date();
long time = date.getTime();
Date date1 = new Date(time);
System.out.println(date1);
结果:输出一个默认的时间
-
Date类型转为String类型
-
先介绍一下 java.text.SimpleDateFormat 类:
-
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 -
日期和时间模式:
-
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母
'A'
到'Z'
和'a'
到'z'
被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 ('
) 引起来,以免进行解释。"''"
表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。 -
定义了以下模式字母(所有其他字符
'A'
到'Z'
和'a'
到'z'
都被保留):
-
-
-
例子:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = simpleDateFormat.format(new Date());
System.out.println("日期:"+dateStr);
结果:输出一个格式为“年-月-日”的字符串时间
当然啦,你也可以使用万能的 toString() 方法,不过获取到的是时区日期:
System.out.println("时间:"+new Date().toString() );
结果:
-
String类型转为Date类型
1、 方法一:使用 parse( ) 方法
parse( ) 方法是从 Java.text.DateFormat 继承的方法。
public Date parse(String source) throws ParseException:从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。在如果无法解析指定字符串的开始处抛出 ParseException 异常。有关日期解析的更多信息,请参阅 parse(String, ParsePosition)
方法。
例子:
try {
Date date = simpleDateFormat.parse("2020-06-04");
System.out.println("日期:"+date);
} catch (ParseException e) {
e.printStackTrace();
}
结果:显示的是一个默认的日期哦
2、方法二:使用 format( )方法
format( ) 是 SimpleDateFormat 类的一个方法,返回的是一个 StringBuffer 类型的数据。
format(Date date, StringBuffer toAppendTo, FieldPosition pos) 将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer 。 |
例子:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = simpleDateFormat.format(new Date());
System.out.println("日期:"+dateStr);
结果:输出一个格式为“年-月-日”的日期