java date类型的数据怎么能显示到毫秒?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java date类型的数据怎么能显示到毫秒?相关的知识,希望对你有一定的参考价值。

我有个date 类型的属性(private Date aa),现在要往aa中赋值,放入当前系统时间,但要求要放入到毫秒级别的啊!
比如以下:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ms");
Date aa= sdf.parse(sdf.format((new Date())));
String bb = sdf.format(new Date());
System.out.println(aa);
System.out.println(bb);
--------------------------------------
输出后:
aa:Thu Apr 24 15:02:36 CST 2014
bb:2014-04-24 15:19:06 196
我想要的是bb这种值的,求各位大神帮忙啊!

参考技术A 可以使用Long类型存储,long value = new Date().getTime();
需要转成date的时候, Date date = new Date(value);
参考技术B 使用java.sql包下的Timestamp(参数) 参数是时间戳 就可以显示到毫秒 参考技术C 呵呵,其实你把aaSET进去然后存放在数据库中显示的就是bb。追问

这个我也试了下,发现存到数据库后,只能显示到秒,例如:2014-04-24 15:32:29
我用的数据库是mysql 字段的属性是timestamp(也试过把数据库的属性改为date 和 datetime),结果还是只能存到秒

追答

我百度看了下,貌似mysql无论是timestamp或者其他都不能存毫秒;

可能要变通一下,如果你需要按时间排序就只能把毫秒单独截取出来然后数据库单独为毫秒加一个字段,如果数据库不需要按时间排序可以把数据库类型设为varchar类型。
我是百度科普了一下,可以借鉴一下。希望对你有所帮助!

本回答被提问者采纳
参考技术D 定义类型将ms 改成SSS 大写的追问

按照你说的,改为大写后,输出结果为下:
aa:Thu Apr 24 15:32:29 CST 2014
bb:2014-04-24 15:32:29 547
好像没怎么改变啊

追答

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

Date date = new Date();
System.out.println(sdf.format(date));

追问

sdf.format(date),就是我上面说的那个bb啊,是String类型的,无法往我Date类型的字段放入的

Java new Date()存在毫秒问题

new Date()与new Timestamp()输出对比

由于我的后台的时间格式:yyyy-MM-dd HH:mm:ss,所以上传的数据会忽略毫秒,但当初我不知道new Date()会毫秒上的误差,毕竟单纯地输出new Date() 会显示Sun Jan 12 12:02:56 CST 2020,看不出区别。
但当我们getTime()的时候,会发现它是记录毫秒的

new Date() ---------------------------- Sun Jan 12 12:02:56 CST 2020
new Timestamp(System.currentTimeMillis()) -- 2020-01-12 12:02:56.339

new Date().getTime() --------------------------------- 1578801776339
new Timestamp(System.currentTimeMillis()).getTime() -- 1578801776339

如果本地数据不做处理的话,会与本地数据发生冲突,除非你在上传数据后再获取数据,保持本地数据与服务器数据相同。

Timestamp.valueof()忽略毫秒

通过获取格式化Date为yyyy-MM-dd HH:mm:ss实现

/**
 * 输出如下
 * nowDateTime() --------------------------- 2020-01-12 12:02:56.0
 * nowDateTime().getTime() ------------------------- 1578801776000
 */
public static Date nowDateTime(){
    return Timestamp.valueOf(
        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE).format(new Date())
        );
}

以上是关于java date类型的数据怎么能显示到毫秒?的主要内容,如果未能解决你的问题,请参考以下文章

Java获取系统时间Date类型转换String类型保存到mysql数据库varchar精确到毫秒需要多少位

java中从1970-1-1到当前时间之间的毫秒数转换为oracle date

mysql5.5时间戳能不能精确到毫秒?

Java日期类型的绍介和操作(二十七)

java中怎么把Long转换成日期格式

java中如何将Timestamp转换为毫秒数