我已按下按钮将当前日期和时间保存到我的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);
}
答案 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();