我使用 ServerValue.TIMESTAMP
设置添加到 Android Firebase 数据库列表中的项目的数据和时间。我知道它最初被设置为 Map
并且当我们检索它时,我们将它检索为 Long
并且为了显示日期和时间,我使用了一种方法看起来像这样:
public static String getTimeDate(long timeStamp){
try{
DateFormat dateFormat = getDateTimeInstance();
Date netDate = (new Date(timeStamp));
return dateFormat.format(netDate);
}
catch(Exception e){
return "date";
}
}
因为我距离服务器7小时,显示日期和时间的时候,是7小时前。使用 ServerValue.TIMESTAMP
时如何显示正确的日期和时间。这有可能吗?
这是我显示时间和日期的方式:
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
Long timeStampLong = (Long) map.get("timeStamp");
String timeStamp = getTimeDate(timeStampLong);
arrayList.add(timeStamp);
arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list, arrayList);
listView.setAdapter(arrayAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(listener);
提前致谢!
最佳答案
此代码 fragment 将时间格式化为本地时区。您可以尝试以此为基础来满足您的需求。我不确定为什么您的代码不起作用。你能发布你正在使用的DateFormat
吗?
DatabaseReference timeRef = FirebaseDatabase.getInstance().getReference("time-test");
timeRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
long time = dataSnapshot.getValue(Long.class);
String s = DateFormat.getDateTimeInstance().format(new Date(time));
Log.d(TAG, "onDataChange: " + s);
} else {
Log.d(TAG, "onDataChange: No data");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
timeRef.setValue(ServerValue.TIMESTAMP);
关于android - 最初使用 ServerValue.TIMESTAMP 和 Android 设置时如何从 Firebase 数据库检索本地 TIMESTAMP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141786/