日期时间戳转换,前两天换了新macbook。不知道是不是m1芯片的原因。系统没有自带php,导致我之前用的时间戳需要转换。工作流无效。作为后端工程师,时间戳转换的功能还是很常用的,所以折腾了一下,修好了。手动安装php后,可能是因为php版本的原因,还是无法使用。我觉得还是不要折腾比较好。那个不太好用,我索性用python写了一个。说说我的工作流实现的几个功能:可以获取当前时间,支持获取秒级时间戳,毫秒级时间戳,日期格式yyyy-MM-dd和yyyy-MM-ddHH:mm:SS。秒级或毫秒级的时间戳可以转换为yyyy-MM-dd和yyyy-MM-ddHH:mm:ss的日期格式。当然,也可以将yyyy-MM-dd和yyyy-MM-ddHH:mm:ss格式的日期转换为秒级和毫秒级的时间戳。下面将详细教大家如何实现以上功能。相信以你的学习能力,很快就能写出别人的作品了。如果不想写,文末附上下载链接,可以直接使用。我们先来看看Alfred工作流需要的输出数据格式。您可以使用json或xml。标题和副标题字段用于显示。我在这里只使用标题字段。arg字段用于将参数传递到下一级工作流。如果您的工作流仅用于显示,则不需要此。我这里经常需要将结果复制到剪贴板,所以后面接了一个Copytoclipboard模块,所以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-2016:44:13","valid":true,"subtitle":"","uid":"datetime","title":"\u65f6\u95f4:2022-02-2016:44:13"}]}实际上,你生成上面的任何方式face格式的json字符串可以用来实现一个新的工作流,不局限于任何语言。所以你可以看到alfred的工作流程可以用各种语言来写。时间戳转换的工作流逻辑非常简单。就是根据输入的参数生成各种格式的日期数据,然后输出上面的json格式。完整代码如下:#-*-coding:utf-8-*-importsysimporttimeimportdatetimeimportrefromworkflowimportWorkflow3defgetTime(ts):wf=Workflow3()s=tstimeArray=time.localtime(ts)#otherStyleTime=time.strftime("%Y-%m-%d%H:%M:%S",ts)ms=str(ts*1000)wf.add_item(uid="s",title="second:"+str(s),arg=s,valid=True)wf.add_item(uid="ms",title="毫秒:"+str(ms),arg=ms,valid=True)wf.add_item(uid="date",title="Date:"+time.strftime("%Y-%m-%d",timeArray),arg=time.strftime("%Y-%m-%d",timeArray),有效=True)wf.add_item(uid="datetime",title="Time:"+time.strftime("%Y-%m-%d%H:%M:%S",timeArray),arg=时间。strftime("%Y-%m-%d%H:%M:%S",timeArray),valid=True)wf.send_feedback()如果__name__=='__main__':如果len(sys.argv)==1:ts=time.time()getTime(int(ts))exit(0)query=sys.argv[1]#print(query)ifquery=='now':ts=time.time()getTime(int(ts))elifre.match(r"\d+-\d+-\d+\d+:\d+:\d+",查询):ts=time.mktime(time.strptime(query,'%Y-%m-%d%H:%M:%S'))getTime(int(ts))elifre.match(r"\d+-\d+-\d+",query):ts=time.mktime(time.strptime(query,'%Y-%m-%d'))getTime(int(ts))elifre.match(r"\d+",query):ts=int(query)如果ts>253402185600:ts=ts/1000Alfred中getTime(ts)的配置如下:最后附上Workflow的下载链接:https://pan.baidu.com/s/1PVS9XvKe-2fle2ZrreCWPA?pwd=ukd8提取码:ukd8
