在Java应用程序里怎么把BSONTimestamp 转换成'yyyy-MM-dd HH:mm:ss' 格式
-
Timestamp 和 BSONTimestamp 是不同类型。
BSONTimestamp 怎么转换成'yyyy-MM-dd HH:mm:ss' ?
-
依據文件
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究竟用来干什么的?
-
需要呈現到秒,而不是毫秒,所以不會有精度問題
另外 inc 的說明這裡有提到
本帖下載内容已隐藏,请登入以查看隐藏内容!Parameters:
time - the time in seconds since epoch
increment - an incrementing ordinal for operations within a given second看起來是每秒遞增數,可用 getInc() 取出目前遞增了多少,對於本篇的需求使用上沒有差別
-
对哦,只精确到秒,没有到毫秒,损失的毫秒,不影响呈现到秒。