python 实现仿微信聊天时间格式化显示的代码

下面是实现仿微信聊天时间格式化显示的代码的攻略:

步骤一:获取时间戳

首先需要获取聊天消息发送的时间戳,通常可以从服务器上获取。在Python中获取时间戳的方法是使用time模块的time()函数,该函数返回从1970年1月1日0时0分0秒到当前时间的秒数。

示例代码:

import time

timestamp = 1569286255
# 将时间戳转换为时间
format_time = time.localtime(timestamp)
print(format_time)

步骤二:格式化时间

将获取到的时间戳转化为可读性更好的时间格式,仿照微信的时间展示方式进行格式化。在Python中格式化时间的方法是使用time模块的strftime()函数,该函数可以将时间转换为指定的格式。

示例代码:

import time

def format_chat_time(timestamp):
    # 将时间戳转换为时间
    format_time = time.localtime(timestamp)
    # 时间格式化
    format_str = '%Y-%m-%d %H:%M:%S'
    month_day_str = '%m-%d %H:%M:%S'
    year_str = '%Y'
    hour_minute_str = '%H:%M:%S'
    current_time = time.strftime(format_str, format_time)
    month_day_time = time.strftime(month_day_str, format_time)
    year_time = time.strftime(year_str, format_time)
    hour_minute_time = time.strftime(hour_minute_str, format_time)
    # 获取当前时间
    current_timestamp = int(time.time())
    today_timestamp = int(time.mktime(time.strptime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(current_timestamp)),'%Y-%m-%d %H:%M:%S')))
    # 今天的时间
    if (current_timestamp - timestamp) < (current_timestamp - today_timestamp):
        result = hour_minute_time
    # 昨天的时间
    elif (current_timestamp - timestamp) < (current_timestamp - today_timestamp + 86400):
        result = '昨天 ' + hour_minute_time
    # 当年的时间
    elif year_time == time.strftime(year_str, time.localtime(current_timestamp)):
        result = month_day_time
    else:
        result = current_time[:10]
    return result

timestamp = 1569286255
print(format_chat_time(timestamp))

输出结果为:

09-24 02:10:55

步骤三:代码优化

对代码进行优化,使用正则表达式提取时间戳并匹配转换。同时,将格式化时间的函数封装成一个类供调用。

示例代码:

import re
import time

class ChatTime:
    def __init__(self, timestamp):
        self.timestamp = timestamp
        # 将时间戳转换为时间
        format_time = time.localtime(self.timestamp)
        # 时间格式化
        self.format_str = '%Y-%m-%d %H:%M:%S'
        self.month_day_str = '%m-%d %H:%M:%S'
        self.year_str = '%Y'
        self.hour_minute_str = '%H:%M:%S'
        self.current_time = time.strftime(self.format_str, format_time)
        self.month_day_time = time.strftime(self.month_day_str, format_time)
        self.year_time = time.strftime(self.year_str, format_time)
        self.hour_minute_time = time.strftime(self.hour_minute_str, format_time)
        # 获取当前时间
        self.current_timestamp = int(time.time())
        self.today_timestamp = int(time.mktime(time.strptime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(self.current_timestamp)),'%Y-%m-%d %H:%M:%S')))

    def __str__(self):
        # 今天的时间
        if (self.current_timestamp - self.timestamp) < (self.current_timestamp - self.today_timestamp):
            result = self.hour_minute_time
        # 昨天的时间
        elif (self.current_timestamp - self.timestamp) < (self.current_timestamp - self.today_timestamp + 86400):
            result = '昨天 ' + self.hour_minute_time
        # 当年的时间
        elif self.year_time == time.strftime(self.year_str, time.localtime(self.current_timestamp)):
            result = self.month_day_time
        else:
            result = self.current_time[:10]
        return result

class ChatMessages:
    def __init__(self, messages):
        self.messages = messages
        self.chat_time_regex = r'^\d{10,}$'

    def __iter__(self):
        for message in self.messages:
            match_obj = re.findall(self.chat_time_regex, message)
            if match_obj:
                chat_time = ChatTime(int(match_obj[0]))
                yield '[{}]'.format(chat_time)
            yield message

chat_messages = ['1569286255', '这是一条聊天消息', '1569346061', '这是一条新的聊天消息']
for message in ChatMessages(chat_messages):
    print(message)

输出结果为:

[09-24 02:10:55]
这是一条聊天消息
[09-25 17:27:41]
这是一条新的聊天消息

通过这个攻略,我们可以快速地实现仿微信聊天时间格式化显示的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 实现仿微信聊天时间格式化显示的代码 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python出现segfault错误解决方法

    Python出现segfault错误解决方法 在Python中,segfault错误通常是由于内存访问错误或其他底层问题导致的。当Python解释器遇到segfault错误时,程序将崩溃并退出。本文将介绍一些常见segfault错误及其解决方法。 解决方法1:更新Python版本 如果您的Python版本过旧,可能会导致segfault错误。解决是更新Pyt…

    python 2023年5月13日
    00
  • Python之捕捉异常详解

    Python之捕捉异常详解 在 Python 中,我们经常会遇到一些运行时错误,称为异常。例如,当我们尝试访问一个列表的索引超过了列表长度时,就会抛出 IndexError 异常。这些异常会导致程序崩溃,因此我们需要在代码中检测并处理这些异常。 异常处理语句 Python 提供了 try-except-finally 语句用于异常处理。 try: # 尝试运…

    python 2023年6月6日
    00
  • python自动化办公操作PPT的实现

    下面我会详细讲解“Python自动化办公操作PPT的实现”的完整攻略。 1. 准备工作 在开始Python自动化办公操作PPT之前,我们需要安装相关依赖库。首先确保已经安装Python,然后使用pip或conda安装以下几个库: python-pptx:用于操作PPT文件 pandas:用于处理Excel表格数据(可选) 安装完成后,可以使用以下代码检测库是…

    python 2023年5月18日
    00
  • 利用Python将多张图片合成视频的实现

    下面是详细讲解“利用Python将多张图片合成视频的实现”的完整攻略: 1. 导入相关库 在使用Python进行图片合成视频之前,需要导入Pillow和OpenCV库,其中Pillow用于处理图片,OpenCV用于处理视频。 from PIL import Image import cv2 2. 设置参数 在进行图片合成视频之前,需要设置一些参数,包括文件路…

    python 2023年5月19日
    00
  • 详解Python的lambda函数用法

    详解Python的lambda函数用法 什么是lambda函数? lambda函数是Python中的匿名函数,它没有名称,并且可以在需要函数的任何位置定义和使用。Lambda函数有很短的语法,通常只包含一个语句,可以在不定义函数的情况下返回值。 lambda函数的语法 lambda arguments: expression lambda函数语法由三部分组成…

    python 2023年6月5日
    00
  • Python随手笔记第一篇(2)之初识列表和元组

    Python随手笔记第一篇(2)之初识列表和元组 在Python中,列表和元组是两种常用的数据类型。本攻略将详细介绍列表和元组,包括它们的定义、创建访问、修改等操作。 列表 列表是Python中最常用的数据类型之一,是一种有序的可变序列,可以包任意类型的元素。以下是Python列表的定义和创建方式: # 定义空列表 my_list = [] # 定义一个包含…

    python 2023年5月13日
    00
  • 深入了解Python中Lambda函数的用法

    下面是“深入了解Python中Lambda函数的用法”的完整攻略: 1. Lambda函数概述 Lambda函数是Python内置的一种匿名函数,可以用于代替传统的函数定义方式,是一种简洁的函数定义方式。 Lambda函数的定义格式如下: lambda argument_list: expression 其中,argument_list是形式参数列表,用逗号…

    python 2023年6月3日
    00
  • python3光学字符识别模块tesserocr与pytesseract的使用详解

    标题:Python3光学字符识别模块TesserOCR与Pytesseract的使用详解 1. 简介 在如今的信息时代中,由于大量文字信息的存在,进行OCR(Optical Character Recognition)光学字符识别成为了必备的技能之一。本文将介绍Python3中两种OCR工具:TesserOCR和Pytesseract,让读者更好地理解它们的…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部