为什么将date +%Y%m%d -s "20081127"
日期设置为2008年11月27日,但date +%Y -s "2008"
将时钟设置为20:08?
答案1
根据该-s
标志的存在,我假设您描述了 GNUdate
命令(GNU coreutils 实用程序集的一部分)。
格式字符串仅影响 的输出date
。该实用程序不使用提供的格式字符串来解析给定的日期/时间字符串。
GNUdate
对于解析日期有相当复杂的规则。您可以在“ ”或“ ”下的文档info date
中找到这些内容info coreutils
日期输入格式” 标题。
尤其是“日期字符串中的纯数字“你会感兴趣:
纯十进制数的精确解释取决于日期字符串中的上下文。
如果十进制数的形式为年月日并且在日期字符串中没有其他日历日期项目(请参阅日历日期项目)出现在它之前,则yyyy读作年份,毫米作为月份数和DD作为指定日历日期的月份中的某一天。
如果十进制数的形式为嗯嗯并且日期字符串中没有其他时间项出现在它之前,那么呵呵被读作一天中的小时并且毫米作为一天中指定时间的一小时中的分钟。 毫米也可以省略。
如果日历日期和时间都出现在日期字符串中数字的左侧,但没有相关项目,则该数字将覆盖年份。
请注意,这适用于全部GNU coreutils 集合中的实用程序能够解析日期,而不仅仅是 GNU date
。