使用python实现一个日期和时间戳互转的Alfred workflow

简介: 使用python实现一个日期和时间戳互转的Alfred workflow

前两天换了新款的macbook,也不知道是不是因为m1芯片的原因,系统没有自带php,导致我之前使用的时间戳转换workflow失效了。作为一个后端工程师,时间戳互转的功能还是非常常用了,于是还折腾修复了下,手动安装php后可能是因为php版本的原因,依旧无法使用,心想还是算了 不折腾了,原来那个也不是很好用,干脆自己用python写一个。

先说下我这个workflow实现的几个功能:

  1. 可以获取当前的时间,支持获取秒级时间戳,毫秒级时间戳,以及yyyy-MM-dd和yyyy-MM-dd HH:mm:ss的日期格式。
  2. 可以将秒级或者毫秒级的时间戳转为yyyy-MM-dd和yyyy-MM-dd HH:mm:ss的日期格式。
  3. 当然也可以将yyyy-MM-dd和yyyy-MM-dd HH:mm:ss格式的日期转为秒级和毫秒级的时间戳。

下文将很具体的教授大家如何实现上述功能,相信以大家的学习能力,很快也能写出其他。如果不想写,文末附上了下载链接,你可以直接拿去使用。

我们首先来看下Alfred workflow所要求的输出数据格式,使用json或者xml都可以,其中title和subtitle字段用做展示,我这里只使用了title字段。arg字段是用来像下一级的workflow传递参数的,如果你的workflow单纯是为了展示,可以不需要这个。我这里经常需要将结果复制到粘贴板中,所以在后面接了一个Copy to clipboard模块,所以arg参数就是必要的了。

复制

{
  "items": [
    {
      "arg": 1645346653,
      "valid": true,
      "subtitle": "",
      "uid": "s",
      "title": "\u79d2: 1645346653"
    },
    {
      "arg": "1645346653000",
      "valid": true,
      "subtitle": "",
      "uid": "ms",
      "title": "\u6beb\u79d2: 1645346653000"
    },
    {
      "arg": "2022-02-20",
      "valid": true,
      "subtitle": "",
      "uid": "date",
      "title": "\u65e5\u671f: 2022-02-20"
    },
    {
      "arg": "2022-02-20 16:44:13",
      "valid": true,
      "subtitle": "",
      "uid": "datetime",
      "title": "\u65f6\u95f4: 2022-02-20 16:44:13"
    }
  ]
}

实际上,你用任何方式生成上面格式的json串,都可以用来实现一个新的workflow,不限于任何语言。 所以你可以看到alfred的workflow可以使用各种语言去写。

关于时间戳转化的workflow逻辑就很简单了,就是根据入参生成各种格式的日期数据,然后将起以上文的json格式输出,完整代码如下:

复制

# -*- coding: utf-8 -*-  
import sys
import time
import datetime
import re
from workflow import Workflow3
def getTime(ts):
    wf = Workflow3()
    s = ts
    timeArray = time.localtime(ts)
    # otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", ts)
    ms = str(ts*1000)
    wf.add_item(uid = "s", title = "秒: "+str(s), arg=s, valid = True)
    wf.add_item(uid = "ms", title = "毫秒: "+str(ms), arg=ms,  valid = True)
    wf.add_item(uid = "date", title = "日期: "+time.strftime("%Y-%m-%d", timeArray), arg=time.strftime("%Y-%m-%d", timeArray),  valid = True)
    wf.add_item(uid = "datetime", title = "时间: "+time.strftime("%Y-%m-%d %H:%M:%S", timeArray), arg=time.strftime("%Y-%m-%d %H:%M:%S", timeArray),  valid = True)
    wf.send_feedback()
if __name__ == '__main__':
    if len(sys.argv) == 1:
        ts = time.time()
        getTime(int(ts)) 
        exit(0)
    query = sys.argv[1]
    # print(query) 
    if query == 'now':
        ts = time.time()
        getTime(int(ts))
    elif re.match(r"\d+-\d+-\d+ \d+:\d+:\d+", query):
        ts = time.mktime(time.strptime(query, '%Y-%m-%d %H:%M:%S'))
        getTime(int(ts))
    elif re.match(r"\d+-\d+-\d+", query):
        ts = time.mktime(time.strptime(query, '%Y-%m-%d'))
        getTime(int(ts))
    elif re.match(r"\d+", query):
        ts = int(query)
        if ts > 253402185600:
            ts = ts/1000 
        getTime(ts)

在Alfred的配置如下:

最后附上Workflow的下载链接: https://pan.baidu.com/s/1PVS9XvKe-2fle2ZrreCWPA?pwd=ukd8 提取码: ukd8


目录
相关文章
|
Python
Datetime模块应用:Python计算上周周几对应的日期
Datetime模块应用:Python计算上周周几对应的日期
822 1
|
Python
Python编程获取当前日期的所属周日期信息
Python编程获取当前日期的所属周日期信息
456 1
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
1076 160
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
1038 161
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
5067 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
数据挖掘 Python
用Python轻松获取任意月份的公休日期
本文介绍了如何使用Python的`calendar`和`datetime`模块轻松获取任意月份的公休日期,包括周六和周日。通过示例代码,用户可以输入年份和月份,程序将输出该月份的所有公休日。这对于安排会议、规划旅行或数据分析都非常有用。
464 3
|
数据挖掘 iOS开发 MacOS
利用Python计算农历日期
利用Python计算农历日期
1201 4
|
数据处理 Python
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
444 1
|
调度 开发者 Python
python超详细的日期操作【建议收藏备用】
python超详细的日期操作【建议收藏备用】
567 0
|
Python
使用python计算两个日期之前的相差天数,周数
使用python计算两个日期之前的相差天数,周数
1447 0

推荐镜像

更多