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
范围内日期的输出格式,带bash_Bash_Date - Fatal编程技术网

范围内日期的输出格式,带bash

范围内日期的输出格式,带bash,bash,date,Bash,Date,我试图使用bash生成一个起始点和结束点之间的日期和时间列表 我希望输出为mm/dd/yyyy hh:mm格式 在命令行上,命令: date +"%m/%d/%Y %H:%M" 生成我要查找的输出 当我使用当前被注释掉的行时,我得到一个错误 date: extra operand ‘%H:%M’ Try 'date --help' for more information. 我不知道如何修改脚本以生成我正在寻找的输出 DATE=date #FORMAT="%m/%d/%Y %H:%M" FO

我试图使用bash生成一个起始点和结束点之间的日期和时间列表

我希望输出为mm/dd/yyyy hh:mm格式

在命令行上,命令:

date +"%m/%d/%Y %H:%M"
生成我要查找的输出

当我使用当前被注释掉的行时,我得到一个错误

date: extra operand ‘%H:%M’
Try 'date --help' for more information.
我不知道如何修改脚本以生成我正在寻找的输出

DATE=date
#FORMAT="%m/%d/%Y %H:%M"
FORMAT="%m/%d/%Y"
start=`$DATE +$FORMAT -d "2013-05-06"`
end=`$DATE +$FORMAT -d "2013-09-16"`
now=$start
while [[ "$now" < "$end" ]] ; do
  now=`$DATE +$FORMAT -d "$now + 1 day"`
  echo "$now"
done
DATE=日期
#FORMAT=“%m/%d/%Y%H:%m”
FORMAT=“%m/%d/%Y”
开始=`$DATE+$FORMAT-d“2013-05-06”`
end=`$DATE+$FORMAT-d“2013-09-16”`
现在=$start
而[[“$now”<“$end”]];做
now=`$DATE+$FORMAT-d“$now+1天”`
回声“$now”
完成
我一直在尝试在开始和结束时间后添加一个00:00,但这不起作用

知道我的输出格式哪里出错了吗

代码来源:

当您使用
格式=“%m/%d/%Y%H:%m”
您需要引号,因为它包含空格,所以:

now=`$DATE +"$FORMAT" -d "$now + 1 day"`
此外,我认为你不能像那样比较日期。您可能需要时间戳:

date +%s

通常,最好使用
start=$(日期+“$格式”…)
,而不是使用反引号
start=`date+“$格式”…`
。或者使用ISO 8601变体表示法:
%Y/%m/%d%H:%m
,可以按字母数字顺序对其进行排序。ISO 8601将年份放在时间的前一天的前一个月,它的许多好处之一是,可以使用简单的字母数字排序将结果排序为日期顺序。我喜欢使用yyyy/mm/dd格式,但我尝试导入的应用程序希望使用指定的格式。不过,用简单的ls进行排序是很好的。当我用引号替换now行时,我仍然会得到关于额外操作数的相同错误。我使用的是:DATE=DATE FORMAT=“%m/%d/%Y%H:%m”#FORMAT=“%m/%d/%Y”start=
$DATE+$FORMAT-d”2013-05-06“
end=
$DATE+$FORMAT-d”2013-09-16”
now=$start而[[“$now”<“$end”]];立即执行=
$DATE+“$FORMAT”-d“$now+1天”
\now=
$DATE+$FORMAT-d“$now+1天”
echo“$now”done@CS3000911任何包含空格的格式都必须有引号