如何获取带有发件人时间的时间戳消息

Posted

技术标签:

【中文标题】如何获取带有发件人时间的时间戳消息【英文标题】:How to get time stamp messages with sender time 【发布时间】:2016-05-24 11:09:29 【问题描述】:

我正在开发一个聊天应用程序。如果我在线,发送和接收当前日期和时间的消息就可以了。但是,如果我在 2 小时后再次离线,我会收到带有当前时间的消息,但我想接收带有发件人时间的消息时间。帮我解决这个问题。

提前致谢。

发送部分

            if (connection != null) 
                connection.sendPacket(msg);
                data = new Msg();
                data.setMessage(text);
                data.setSenderName(userFrom);
                String date = DateAndTime.getCurrentDate();
                data.setDate(date);
                String time = DateAndTime.getCurrentTime();
                data.setTime(time);
                data.setSender(true);
                MessageListAdapter.messagesItems.add(data);
                notifyMyAdapter();
            

接收部分

    if (connection != null) 
        // Add a packet listener to get messages sent to us
        PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
        connection.addPacketListener(new PacketListener() 
            @Override
            public void processPacket(Packet packet) 
                Message message = (Message) packet;
                String from = to + "@localhost/Smack";
                if (from.equalsIgnoreCase(message.getFrom())) 
                    if (message.getBody() != null) 
                        String fromName = StringUtils.parseBareAddress(message.getFrom());
                        Msg data = new Msg();
                        String subject = message.getSubject();
                        if (subject == null) 
                            String text = message.getBody();
                            data.setMessage(text);
                            data.setSenderName(NAME);
                            String date = DateAndTime.getCurrentDate();
                            data.setDate(date);
                            String time = DateAndTime.getCurrentTime();
                            data.setTime(time);
                            data.setSender(false);
                            MessageListAdapter.messagesItems.add(data);

                            // Add the incoming message to the list view
                            mHandler.post(new Runnable() 
                                public void run() 
                                    notifyMyAdapter();
                                
                            );
                    
                
            
        , filter);
    

【问题讨论】:

【参考方案1】:

我认为您所要做的就是在发布消息时data.setCreatedAtTime(System.currentTimeMillis(); System.currentTimeMillis(); 的好处是它采用纪元和毫秒格式,并且在所有时区中保持不变。 现在在接收方,您可以将毫秒转换为您想要的任何格式

【讨论】:

以上是关于如何获取带有发件人时间的时间戳消息的主要内容,如果未能解决你的问题,请参考以下文章

如何根据时间戳获取Kafka消息

如何使用实体框架和 MySQL 获取每个组的最新记录,包括相关实体

如何从 Smack 4.1 中的实时消息中获取服务器时间戳

如何使用 facebook fql 获取消息未知收件人的电子邮件或姓名而不是 0?

如何以毫秒为单位获取带有 unix 时间戳的人类可读日期? [复制]

如何将 Android 发件人的 IP 地址获取到 Chromecast 设备?