前两天换了新款的macbook,也不晓得是不是因为m1芯片的起因,零碎没有自带php,导致我之前应用的工夫戳转换workflow生效了。作为一个后端工程师,工夫戳互转的性能还是十分罕用了,于是还折腾修复了下,手动装置php后可能是因为php版本的起因,仍旧无奈应用,心想还是算了 不折腾了,原来那个也不是很好用,罗唆本人用python写一个。
先说下我这个workflow实现的几个性能:
- 能够获取以后的工夫,反对获取秒级工夫戳,毫秒级工夫戳,以及
yyyy-MM-dd
和yyyy-MM-dd HH:mm:ss
的日期格局。 - 能够将秒级或者毫秒级的工夫戳转为
yyyy-MM-dd
和yyyy-MM-dd HH:mm:ss
的日期格局。 - 当然也能够将
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 sysimport timeimport datetimeimport refrom workflow import Workflow3def 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