Convert ServerValue.TIMESTAMP To date

时间秒杀一切 提交于 2021-01-04 05:52:26

问题


I have put a button to save the current Date and Time to My Firebase Database .

private void saveTime() {
        DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        rootRef.child(Uid).child("time").setValue(ServerValue.TIMESTAMP);
    }

I am trying to compare the server Date with My saved Date which i putted in my database . So please help me to compare it.

 private void Compare() {

        DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        DatabaseReference ezzeearnRef = rootRef.child(Uid).child("time");
        ValueEventListener eventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    Long time = dataSnapshot.getValue(Long.class);
                    assert time != null;
                    Date oldDate = new Date(time);
                    GregorianCalendar oldCalendar = new GregorianCalendar();
                    oldCalendar.setTime(oldDate);
                        GregorianCalendar newCalendar = new GregorianCalendar();


                Map<String, String> now = ServerValue.TIMESTAMP;
                newCalendar.setTime((Date) now);

                    if (newCalendar.get(Calendar.DATE) != oldCalendar.get(Calendar.DATE) ||
                            newCalendar.get(Calendar.MONTH) != oldCalendar.get(Calendar.MONTH) ||
                            newCalendar.get(Calendar.YEAR) != oldCalendar.get(Calendar.YEAR)

                            ) {
                        // new day starts toast
                    }


                }else{
                    // toast
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        };
        ezzeearnRef.addValueEventListener(eventListener);

    }

回答1:


You are correctly retrieving the timestamp from your database. To compare that timestamp, which is the server timestamp, with the accualt time, you can comparate with the current using the following line of code:

Long currentTimeMillis = System.currentTimeMillis();

Then you can use a simple if statement:

if(time < currentTimeMillis) {
    //Do something
} else {
    //Do something else
}



回答2:


ServerValue.TIMESTAMP is not really timestamp it a Map so you cannot cast it to date like this

Map<String, String> now = ServerValue.TIMESTAMP;
newCalendar.setTime((Date) now);

the timestamp value will be stored from the server



来源:https://stackoverflow.com/questions/48458486/convert-servervalue-timestamp-to-date

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!