Java 时间戳方法';SimpleDataFormat';无法从数据库中检索

Java 时间戳方法';SimpleDataFormat';无法从数据库中检索,java,android,firebase,timestamp,simpledateformat,Java,Android,Firebase,Timestamp,Simpledateformat,我遇到的问题是,时间戳没有像下面在Firebase中看到的那样保存。在Postsnotimestampchild下。有人能解释一下为什么会这样吗 我真的很感激有人看我一眼,告诉我我做错了什么 下面是时间戳的代码PostAdapter.java,PostActivity.java,以及Post.java模型类 PostActivity.java package com.e.events; public class PostActivity extends AppCompatA

我遇到的问题是,
时间戳
没有像下面在Firebase中看到的那样保存。在
Posts
no
timestamp
child下。有人能解释一下为什么会这样吗

我真的很感激有人看我一眼,告诉我我做错了什么

下面是
时间戳的代码
PostAdapter.java
PostActivity.java
,以及
Post.java
模型类

PostActivity.java


    package com.e.events;

    public class PostActivity extends AppCompatActivity {

        Uri imageUri;
        String myUrl = "";
        StorageTask uploadTask;
        StorageReference storageReference;

        ImageView close, post_checkmark, image_added;
        String description, text_event, text_location, text_date_time;
        EditText txt_event, txt_description, txt_location, txt_date_time;

        private String postId;
        private String postImage;
        private String publisher;
        private Map<String, String> timestamp;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_post);

            close = findViewById(R.id.close);
            post_checkmark = findViewById(R.id.post_checkmark);
            image_added = findViewById(R.id.new_image_added);
            txt_description = findViewById(R.id.description);
            txt_event = findViewById(R.id.text_event);
            txt_location = findViewById(R.id.text_location);
            txt_date_time = findViewById(R.id.text_date_time);

            storageReference = FirebaseStorage.getInstance().getReference("posts");

            close.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent(PostActivity.this, MainActivity.class));
                    finish();
                }
            });

            post_checkmark.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    uploadImage();
                }
            });

            CropImage.activity()
                    .setAspectRatio(1, 1)
                    .start(PostActivity.this);
        }

    private void saveTimestamp() {
            Log.d(TAG, "saveTimestamp: getting timestamp");
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            String key = database.getReference().child("Posts").push().getKey();

            Post post = new Post(description, postId, postImage, publisher, timestamp, text_event, text_location, text_date_time);
            database.getReference("Posts").child(key).setValue(post);

            DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
            Map<String, Object> map = new HashMap<>();
            map.put("timestamp", ServerValue.TIMESTAMP);
            reference.child("Posts").setValue(map);
        }
    }


    package com.e.events.Adapter;

    public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder> {

        public Context mContext;
        public List<Post> mPost;

        private FirebaseUser firebaseUser;

        public PostAdapter(Context mContext, List<Post> mPost) {
            this.mContext = mContext;
            this.mPost = mPost;
        }

        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.post_item, parent, false);
            return new PostAdapter.ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

            firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
            final Post post = mPost.get(position);

            Glide.with(mContext).load(post.getPostimage())
                    .apply(new RequestOptions().placeholder(R.drawable.placeholderimg))
                    .into(holder.post_image);
    if ("".equals(post.getTimestamp())) {
                Log.i(TAG, post.getTimestamp().toString());
                holder.timestamp.setVisibility(View.GONE);
            } else {
                holder.timestamp.setVisibility(View.VISIBLE);
                holder.timestamp.setText(post.getTimestamp().toString());
            }

    public class ViewHolder extends RecyclerView.ViewHolder {

            public TextView timestamp;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);


                timestamp = itemView.findViewById(R.id.timestamp);

            }

            //Set words for the timestamp "Today" or "___ days ago"
            private void setupWidgets() {
                String timestampDifference = getTimestampDifference();
                if (!timestampDifference.equals("0")) {
                    timestamp.setText(timestampDifference + " days ago");
                } else {
                    timestamp.setText("Today");
                }
            }

            //Timestamp
            private String getTimestampDifference() {
                Log.d(TAG, "getTimestampDifference: getting timestamp difference");

                String difference = "";
                Calendar calendar = Calendar.getInstance();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy'T'HH:mm:ss'Z'", Locale.US);
                simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
                Date today = calendar.getTime();
                simpleDateFormat.format(today);
                Date timestamp;
                final String dateTime = simpleDateFormat.format(calendar.getTime());
                try {
                    timestamp = simpleDateFormat.parse(dateTime);
                    difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24)));
                } catch (ParseException e) {
                    difference = "0";
                }
                return difference;
            }
        }

        private void getTimestamp() {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    Long timestamp = (Long) snapshot.getValue();
                    System.out.println(timestamp);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }


包com.e.events;
公共类PostActivity扩展了AppCompative活动{
Uri-imageUri;
字符串myUrl=“”;
StorageTask上传任务;
StorageReference-StorageReference;
ImageView关闭、post_复选标记、图像_添加;
字符串描述、文本事件、文本位置、文本日期时间;
EditText txt_事件、txt_描述、txt_位置、txt_日期_时间;
私人字符串posted;
私有字符串后期图像;
私有字符串发布器;
私有映射时间戳;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
关闭=findViewById(R.id.close);
post_复选标记=findViewById(R.id.post_复选标记);
添加的图像=findviewbyd(R.id.new\u添加的图像);
txt_description=findviewbyd(R.id.description);
txt_事件=findViewById(R.id.text_事件);
txt_location=findviewbyd(R.id.text_location);
txt_date_time=findviewbyd(R.id.text_date_time);
storageReference=FirebaseStorage.getInstance().getReference(“posts”);
close.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(PostActivity.this,MainActivity.class));
完成();
}
});
post_checkmark.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
上传图像();
}
});
CropImage.activity()
.setAspectRatio(1,1)
.启动(后活动。此);
}
私有void saveTimestamp(){
Log.d(标记“saveTimestamp:gettingtimestamp”);
FirebaseDatabase=FirebaseDatabase.getInstance();
String key=database.getReference().child(“Posts”).push().getKey();
Post Post=新发布(描述、发布ID、发布图像、发布者、时间戳、文本事件、文本位置、文本日期时间);
database.getReference(“Posts”).child(key).setValue(post);
DatabaseReference=FirebaseDatabase.getInstance().getReference();
Map Map=newhashmap();
map.put(“timestamp”,ServerValue.timestamp);
参考.child(“Posts”).setValue(map);
}
}
PostAdapter.java


    package com.e.events;

    public class PostActivity extends AppCompatActivity {

        Uri imageUri;
        String myUrl = "";
        StorageTask uploadTask;
        StorageReference storageReference;

        ImageView close, post_checkmark, image_added;
        String description, text_event, text_location, text_date_time;
        EditText txt_event, txt_description, txt_location, txt_date_time;

        private String postId;
        private String postImage;
        private String publisher;
        private Map<String, String> timestamp;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_post);

            close = findViewById(R.id.close);
            post_checkmark = findViewById(R.id.post_checkmark);
            image_added = findViewById(R.id.new_image_added);
            txt_description = findViewById(R.id.description);
            txt_event = findViewById(R.id.text_event);
            txt_location = findViewById(R.id.text_location);
            txt_date_time = findViewById(R.id.text_date_time);

            storageReference = FirebaseStorage.getInstance().getReference("posts");

            close.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent(PostActivity.this, MainActivity.class));
                    finish();
                }
            });

            post_checkmark.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    uploadImage();
                }
            });

            CropImage.activity()
                    .setAspectRatio(1, 1)
                    .start(PostActivity.this);
        }

    private void saveTimestamp() {
            Log.d(TAG, "saveTimestamp: getting timestamp");
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            String key = database.getReference().child("Posts").push().getKey();

            Post post = new Post(description, postId, postImage, publisher, timestamp, text_event, text_location, text_date_time);
            database.getReference("Posts").child(key).setValue(post);

            DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
            Map<String, Object> map = new HashMap<>();
            map.put("timestamp", ServerValue.TIMESTAMP);
            reference.child("Posts").setValue(map);
        }
    }


    package com.e.events.Adapter;

    public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder> {

        public Context mContext;
        public List<Post> mPost;

        private FirebaseUser firebaseUser;

        public PostAdapter(Context mContext, List<Post> mPost) {
            this.mContext = mContext;
            this.mPost = mPost;
        }

        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.post_item, parent, false);
            return new PostAdapter.ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

            firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
            final Post post = mPost.get(position);

            Glide.with(mContext).load(post.getPostimage())
                    .apply(new RequestOptions().placeholder(R.drawable.placeholderimg))
                    .into(holder.post_image);
    if ("".equals(post.getTimestamp())) {
                Log.i(TAG, post.getTimestamp().toString());
                holder.timestamp.setVisibility(View.GONE);
            } else {
                holder.timestamp.setVisibility(View.VISIBLE);
                holder.timestamp.setText(post.getTimestamp().toString());
            }

    public class ViewHolder extends RecyclerView.ViewHolder {

            public TextView timestamp;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);


                timestamp = itemView.findViewById(R.id.timestamp);

            }

            //Set words for the timestamp "Today" or "___ days ago"
            private void setupWidgets() {
                String timestampDifference = getTimestampDifference();
                if (!timestampDifference.equals("0")) {
                    timestamp.setText(timestampDifference + " days ago");
                } else {
                    timestamp.setText("Today");
                }
            }

            //Timestamp
            private String getTimestampDifference() {
                Log.d(TAG, "getTimestampDifference: getting timestamp difference");

                String difference = "";
                Calendar calendar = Calendar.getInstance();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy'T'HH:mm:ss'Z'", Locale.US);
                simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
                Date today = calendar.getTime();
                simpleDateFormat.format(today);
                Date timestamp;
                final String dateTime = simpleDateFormat.format(calendar.getTime());
                try {
                    timestamp = simpleDateFormat.parse(dateTime);
                    difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24)));
                } catch (ParseException e) {
                    difference = "0";
                }
                return difference;
            }
        }

        private void getTimestamp() {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    Long timestamp = (Long) snapshot.getValue();
                    System.out.println(timestamp);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }


包com.e.events.Adapter;
公共类PostAdapter扩展了RecyclerView.Adapter{
公共语境;
公开名单;
私有FirebaseUser FirebaseUser;
公共邮政适配器(上下文mContext、列表mPost){
this.mContext=mContext;
this.mPost=mPost;
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
视图=LayoutFlater.from(mContext)。充气(R.layout.post_项,父项,false);
返回新的PostAdapter.ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull final ViewHolder,int位置){
firebaseUser=FirebaseAuth.getInstance().getCurrentUser();
最终Post Post=mPost.get(位置);
Glide.with(mContext.load)(post.getPostimage())
.apply(新的RequestOptions().placeholder(R.drawable.placeholder img))
.into(保持架、post_图像);
如果(“.equals(post.getTimestamp())){
Log.i(标记,post.getTimestamp().toString());
holder.timestamp.setVisibility(View.GONE);
}否则{
holder.timestamp.setVisibility(View.VISIBLE);
holder.timestamp.setText(post.getTimestamp().toString());
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图时间戳;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
timestamp=itemView.findviewbyd(R.id.timestamp);
}
//为时间戳“今天”或“几天前”设置单词
私有void setupWidgets(){
字符串timestampDifference=getTimestampDifference();
如果(!timestampDifference.equals(“0”)){
timestamp.setText(timestampDifference+“天以前”);
}否则{
timestamp.setText(“今天”);
}
}
//时间戳
私有字符串getTimestampDifference(){
d(标记“getTimestampDifference:getting timestamp difference”);
字符串差=”;
日历=Calendar.getInstance();
SimpleDataFormat SimpleDataFormat=新的SimpleDataFormat(“dd-MMM-yyyy'T'HH:mm:ss'Z',Locale.US”);
SimpleDataFormat.setTimeZone(TimeZone.getTimeZone(“美国/芝加哥”);
Date today=calendar.getTime();
SimpleDataFormat.format(今天);
日期时间戳;
最终字符串dateTime=simpleDataFormat.format(calendar.getTime());
试一试{
timest
Posts post = new Post(description,postId,postImage,publisher,timestamp);
db.getReference("Posts").child(key).setValue(post);
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
                Map map = new HashMap();
                map.put("timestamp", ServerValue.TIMESTAMP);
                reference.child("Posts").child(key). updateChildren(map)