乐趣区

关于java:使用python实现一个日期和时间戳互转的Alfred-workflow

前两天换了新款的 macbook,也不晓得是不是因为 m1 芯片的起因,零碎没有自带 php,导致我之前应用的工夫戳转换 workflow 生效了。作为一个后端工程师,工夫戳互转的性能还是十分罕用了,于是还折腾修复了下,手动装置 php 后可能是因为 php 版本的起因,仍旧无奈应用,心想还是算了 不折腾了,原来那个也不是很好用,罗唆本人用 python 写一个。

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

  1. 能够获取以后的工夫,反对获取秒级工夫戳,毫秒级工夫戳,以及 yyyy-MM-ddyyyy-MM-dd HH:mm:ss的日期格局。
  2. 能够将秒级或者毫秒级的工夫戳转为 yyyy-MM-ddyyyy-MM-dd HH:mm:ss的日期格局。
  3. 当然也能够将 yyyy-MM-ddyyyy-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

退出移动版