如何从Date对象设置Android Chronometer基准时间?

从特定时间开始,我遇到了一个启动天文台的问题。 有一个date对象,我想我的天文钟开始:

Date d = new Date(); //now, just for example chronometer.setBase(d.getTime()); //long value of d Log.d("Date: " , "d.getTime() time is [" + d.getTime() +"]"); Log.d("Chron: " , "chronometer.getBase() is [" + chronometer.getBase() +"]"); //let's print out elapsedRealtime from official sample Log.d("Chron: " , "SystemClock.elapsedRealtime() is [" + SystemClock.elapsedRealtime() +"]"); 

输出:

 06-02 13:35:23.025: D/Date:(928): d.getTime() time is [1338644123032] 06-02 13:35:23.037: D/Chron:(928): chronometer.getBase() is [1338644123032] 06-02 13:35:23.037: D/Chron:(928): SystemClock.elapsedRealtime() is [11624388] 

其实,为什么这个时间长短不一(11624388和1338644123032)呢?

当我从基地开始我的天文钟

 chronometer.setBase(SystemClock.elapsedRealtime()); 

– 它总是正常工作(“00:00”和上升)

    但是,当我尝试从过去的date(fe昨天)设置date:

     chronometer.setBase(yesterday.getTime()); 

    – 它显示“00:0(”并且每秒更改最新的字符到“)”,“*”,“/”和其他

    你能告诉我如何设置天文台基地date对象?

    Related of "如何从Date对象设置Android Chronometer基准时间?"

    其实,为什么这个时间长短不一(11624388和1338644123032)呢?

    SystemClock.elapsedRealtime()是设备开启后的毫秒数。 其他值基于System.currentTimeMillis() ,这是Unix时代以来的毫秒数。

    你能告诉我如何设置天文台基地date对象?

    你没有。 这不是什么Chronometer 。 引用Chronometer的文档 :

    您可以在elapsedRealtime()时基中给它一个开始时间,并从中计算出来,或者如果您不给它一个基准时间,它将使用您调用start()的时间。

    我其实也有类似的问题(date来自外部服务,而不是数据库),我想显示date是多大。

    事实certificate这很简单:

     long lastSuccess = serviceDate.getTime(); //Some Date object long elapsedRealtimeOffset = System.currentTimeMillis() - SystemClock.elapsedRealtime(); pollAgeView.setBase(lastSuccess - elapsedRealtimeOffset); pollAgeView.start();