Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Linux日期转换为yyyy-MM-dd';T';HH:mm:ss';Z';格式_Linux_Date_Datetime_Smartsheet Api 2.0 - Fatal编程技术网

将Linux日期转换为yyyy-MM-dd';T';HH:mm:ss';Z';格式

将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

我需要参数化datetime值,目标是传递到构造的URI,以进行Smartsheet API调用,以获取过去24小时内更改的数据(即工作表)

我想使用Linux
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
)。GNU
date
扩展了使用
%:z
设置的格式,该格式输出数字时区,但如果已经使用GNU
date
,则使用
-的第一种方法更简单。

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