在Java应用程序里怎么把BSONTimestamp 转换成'yyyy-MM-dd HH:mm:ss' 格式



  • Timestamp 和 BSONTimestamp 是不同类型。

    BSONTimestamp 怎么转换成'yyyy-MM-dd HH:mm:ss' ?


  • Lv 1

    @asd

    依據文件

    timestamp to BSONTimestamp , inc=0, time=timestamp

    public BSONTimestamp(int time,
                         int inc)


    BSONTimestamp 轉 timestamp

    public int getTime()

    Returns:get time in seconds since epoch



  • @22265 说:

     timestamp 一般都是long型,转成int型会丢失精度。

         即,下面方法中,time为int型,这个int型怎么生成的?

    public BSONTimestamp(int time,
                         int inc)

    一般用:system.currenttimemillis() 生成的是long型

    如果用 int timestamp=(int)(system.currenttimemillis()/1000) 来生成的timestamp,

    那么当把这个timestamp 转换打印出 'yyyy-MM-dd HH:mm:ss'  时,时间是会丢失精度。

    还有,不知道 inc 这个参数在实际项目有什么作用?


  • 註冊用戶

    給你參考

    import java.text.SimpleDateFormat;
    import org.bson.types.BSONTimestamp;
    import java.sql.Timestamp;

    public class test
    {
        public static void main( String[] args )
        {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            BSONTimestamp bt = new BSONTimestamp((int) (System.currentTimeMillis() / 1000), 1);
            System.out.println(sdf.format(new Timestamp(bt.getTime() * 1000L)));
        }
    }



  • @yea 这个代码我已有,谢谢。

    仍然会存在丢失精度的问题,因为后面除以1000 再乘以1000 会丢失精度,把long型转为int型,又把int型转化long型,但这个应可以忽略。

    还有,inc究竟用来干什么的?


  • 註冊用戶

    @asd

    需要呈現到秒,而不是毫秒,所以不會有精度問題

    另外 inc 的說明這裡有提到

    本帖下載内容已隐藏,请登入以查看隐藏内容!

    Parameters:
    time - the time in seconds since epoch
    increment - an incrementing ordinal for operations within a given second

    看起來是每秒遞增數,可用 getInc() 取出目前遞增了多少,對於本篇的需求使用上沒有差別



  • @yea

    对哦,只精确到秒,没有到毫秒,损失的毫秒,不影响呈现到秒。


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待