转换ServerValue.TIMESTAMP到目前为止

时间:2018-01-26 09:17:05

标签: android firebase firebase-realtime-database

我已按下按钮将当前日期和时间保存到我的Firebase数据库。

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

我正在尝试将服务器日期与我保存在数据库中的保存日期进行比较。所以请帮我比较一下。

 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);

    }

2 个答案:

答案 0 :(得分:1)

ServerValue.TIMESTAMP并不是Map的时间戳,所以你不能像今天这样把它投到

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

时间戳值将从服务器

存储

答案 1 :(得分:0)

您正在从数据库中正确检索时间戳。要将时间戳(即服务器时间戳)与准确时间进行比较,您可以使用以下代码行与当前时间戳进行比较:

<script async defer ... &callback=initMap

然后你可以使用简单的if语句:

Long currentTimeMillis = System.currentTimeMillis();