【python】time/datetime/Timestamp使用问题汇总

  • 需要给时间戳加上北京时区(UTC+8)
    from pytz import timezone
    from datetime import datetime
    tz = timezone('Asia/Shanghai')  # 由于没有北京时区可选,因此用上海时区替代
    print tz #<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>, 可见该时区与北京时区相比相差了6min
    ## 为解决6min的问题,需注意不能在生成datetime或timestamp的时候就把时区替代上去,而需要先生成时间,再通过localize把时区应用到时间上。
    
    t = datetime(2019,7,9,13,0,0, tzinfo=tz) # 错误写法,得到结果为:datetime.datetime(2019, 7, 9, 13, 0, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>)
    
    t = datetime( 2019,7,9,13,0,0)
    t = tz.localize(t)  ## 正确写法,得到结果为:datetime.datetime(2019, 7, 9, 13, 0, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
    
  • Timestamp与datetime.datetime局部修改
    ## 可直接用replace修改属性,如改变年份和日
    dt  = datetime(2019,7,9,13,0,0)
    dt.replace(year=2020, day=20)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python调用企业微信API实现抓取自己账号的企业微信群组聊天记录的功能,具体步骤如下: 1. 获取企业微信API的访问凭证 企业微信API的访问凭证包括企业ID(CorpID)、应用的凭证密钥(CorpSecret)和应用的代理ID(AgentID),可以在企业微信管理后台的“应用与小程序”中找到。 ``` import requests # 获取企业微信API的访问凭证 def get_access_token(corpid, corpsecret): url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken" params = { "corpid": corpid, "corpsecret": corpsecret } r = requests.get(url, params=params) return r.json().get("access_token") ``` 2. 获取群组聊天记录 调用企业微信API的获取聊天记录接口,指定聊天记录的起始间和结束间,以及群组ID或者群组名称。 ``` import datetime # 获取群组聊天记录 def get_chat_record(access_token, chatid, start_time, end_time): url = "https://qyapi.weixin.qq.com/cgi-bin/appchat/getmsglist" params = { "access_token": access_token } data = { "chatid": chatid, "starttime": start_time, "endtime": end_time } r = requests.post(url, params=params, json=data) return r.json().get("errmsg"), r.json().get("recordlist") ``` 其中,参数start_time和end_time需要传入datetime类型的间戳,可以使用如下代码进行转换: ``` import time # 将间转换为间戳 def datetime_to_timestamp(dt): return int(time.mktime(dt.timetuple())) # 获取当前间的间戳 now = datetime.datetime.now() end_time = datetime_to_timestamp(now) # 获取一天前的间的间戳 one_day_ago = now - datetime.timedelta(days=1) start_time = datetime_to_timestamp(one_day_ago) ``` 3. 统计聊天记录信息 解析获取到的聊天记录数据,统计需要的数据信息,例如每个人发了多少条消息、消息的类型、消息的长度等等。可以使用Python的pandas模块进行数据分析和处理。 ``` import pandas as pd # 统计聊天记录信息 def count_chat_record(recordlist): df = pd.DataFrame(recordlist) df["msgtype"] = df["msgtype"].apply(lambda x: "text" if x == 1 else "image") df["msglen"] = df["content"].apply(lambda x: len(x.get("text", ""))) return df.groupby("sender").agg({ "msgid": "count", "msgtype": lambda x: dict(x.value_counts()), "msglen": ["min", "max", "mean"] }).reset_index() ``` 4. 输出统计结果 将统计结果输出到文件或数据库中,方便后续的汇总和分析。 ``` # 输出统计结果 def output_result(result, output_file): with open(output_file, "w") as f: f.write(result.to_csv(index=False)) ``` 完整代码如下: ``` import requests import datetime import time import pandas as pd # 获取企业微信API的访问凭证 def get_access_token(corpid, corpsecret): url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken" params = { "corpid": corpid, "corpsecret": corpsecret } r = requests.get(url, params=params) return r.json().get("access_token") # 获取群组聊天记录 def get_chat_record(access_token, chatid, start_time, end_time): url = "https://qyapi.weixin.qq.com/cgi-bin/appchat/getmsglist" params = { "access_token": access_token } data = { "chatid": chatid, "starttime": start_time, "endtime": end_time } r = requests.post(url, params=params, json=data) return r.json().get("errmsg"), r.json().get("recordlist") # 将间转换为间戳 def datetime_to_timestamp(dt): return int(time.mktime(dt.timetuple())) # 统计聊天记录信息 def count_chat_record(recordlist): df = pd.DataFrame(recordlist) df["msgtype"] = df["msgtype"].apply(lambda x: "text" if x == 1 else "image") df["msglen"] = df["content"].apply(lambda x: len(x.get("text", ""))) return df.groupby("sender").agg({ "msgid": "count", "msgtype": lambda x: dict(x.value_counts()), "msglen": ["min", "max", "mean"] }).reset_index() # 输出统计结果 def output_result(result, output_file): with open(output_file, "w") as f: f.write(result.to_csv(index=False)) if __name__ == "__main__": corpid = "your_corpid" corpsecret = "your_corpsecret" agentid = "your_agentid" chatid = "your_chatid" output_file = "result.csv" # 获取访问凭证 access_token = get_access_token(corpid, corpsecret) # 获取聊天记录 now = datetime.datetime.now() end_time = datetime_to_timestamp(now) one_day_ago = now - datetime.timedelta(days=1) start_time = datetime_to_timestamp(one_day_ago) errmsg, recordlist = get_chat_record(access_token, chatid, start_time, end_time) if errmsg == "ok": # 统计聊天记录信息 result = count_chat_record(recordlist) # 输出统计结果 output_result(result, output_file) else: print("获取聊天记录失败:", errmsg) ``` 需要注意的是,企业微信的API接口需要按照规定的频次和方式进行调用,不要过于频繁或者超过限制,否则会被封禁。同,聊天记录可能包含敏感信息,需要做好数据保护和隐私保密工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值