将Linux日期转换为yyyy-MM-dd';T';HH:mm:ss';Z';格式
我需要参数化datetime值,目标是传递到构造的URI,以进行Smartsheet API调用,以获取过去24小时内更改的数据(即工作表) 我想使用Linux将Linux日期转换为yyyy-MM-dd';T';HH:mm:ss';Z';格式,linux,date,datetime,smartsheet-api-2.0,Linux,Date,Datetime,Smartsheet Api 2.0,我需要参数化datetime值,目标是传递到构造的URI,以进行Smartsheet API调用,以获取过去24小时内更改的数据(即工作表) 我想使用Linuxdate命令,因为我可以执行类似于date-d'1天前“%F的操作来获取前一天的输出。如何使用date命令将值转换为yyyy-MM-dd'T'HH:MM:ss'Z'格式以获得类似2018-01-01T00:00:00-07:00的内容 如果该值不是此特定格式,则Smartsheet API会抱怨: HTTP_01 - Error fetc
date
命令,因为我可以执行类似于date-d'1天前“%F
的操作来获取前一天的输出。如何使用date命令将值转换为yyyy-MM-dd'T'HH:MM:ss'Z'
格式以获得类似2018-01-01T00:00:00-07:00的内容
如果该值不是此特定格式,则Smartsheet API会抱怨:
HTTP_01 - Error fetching resource. Status: 400 Reason:
Bad Request : { "errorCode" : 1018, "message" : "The value '/home/my/path/to/param_file/Sysdate' was not valid for the parameter modifiedSince.", "refId" : "1xqawd3s94f4y" }
谢谢,在shell中调用date
时,请使用以下格式
date +"%Y-%m-%dT%H-%M-%SZ"
2018-03-09T07-44-39Z
要以格式输出日期,您可能需要使用-I[FMT]
/--iso-8601[=FMT]
选项,如果您支持的话(GNU/Linux版本支持)。FMT
基本上是一种解决方案,在您的情况下,您需要使用s
几秒钟:
$ date -Is
2018-03-09T09:28:14+01:00
另一种选择(对于,包括)是明确指定格式并以UTC
时区(-u
标志)输出时间:
注意-u
的重要性,以及在这种情况下我们可以附加的显式Z
。如果没有-u
,我们需要以+hh:mm
格式输出准确的时区,但是POSIX日期
仅支持时区名称输出(%Z
)。GNUdate
扩展了使用%:z
设置的格式,该格式输出数字时区,但如果已经使用GNUdate
,则使用-的第一种方法更简单。在bash\u配置文件中使用此别名:
alias utc='date -u +"%Y-%m-%dT%H:%M:%SZ"'
然后,您可以像这样运行它:
$ utc
输出将是:
$ 2021-04-15T01:36:31Z
堆栈溢出不是代码编写服务。请出示你的密码。由于堆栈溢出对您隐藏了关闭原因:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。看:。@jww,你对所有答案都投了反对票吗?如果是,为什么?请注意,仅当您的本地时区为UTC时,才会打印正确的时间。这个命令的问题是它总是打印本地时间并附加硬编码/固定时区Z。请查看-u
标志(请参阅我的答案)。
$ 2021-04-15T01:36:31Z