我有一个从批处理文件运行的进程,我只想在一周中的某一天运行它。
是否有可能获得星期几?
我发现的所有示例都以某种方式依赖“date /t”返回“Friday, 12/11/2009”,但是,在我的机器中,“date /t”返回“12/11/2009”。那里没有工作日。
我已经检查了我机器的“区域设置”,长日期格式确实包括工作日。短日期格式没有,但我真的不想改变它,因为它会影响我做的很多事情。
我需要能够将 Ubuntu (8.04.4 LTS) 上的日期设置为 2040 年(以测试与此问题无关的内容)。那可能吗?
我可以跑:
$ sudo date -s "15 JAN 2038 18:00:00"
Fri Jan 15 18:00:00 PST 2038
Run Code Online (Sandbox Code Playgroud)
...但:
$ sudo date -s "15 JAN 2039 18:00:00"
date: invalid date `15 JAN 2039 18:00:00'
Run Code Online (Sandbox Code Playgroud)
限制是否在 2038 年(或 2039 年 1 月 15 日之前)?这会随着 Linux 的不同版本而改变吗?
在 GNU/Linux/Debian 中遇到系统日期/时间问题:日期、时间、cron 的时间过快。sleep 命令工作正常,文件修改时间正确。通过命令解释的问题:
$ date
Mon Sep 12 05:27:46 CEST 2011
$ time sleep 1
real 71m13.403s
user 0m0.008s
sys 0m0.012s
$ date
Fri Sep 16 22:00:02 CEST 2011
Run Code Online (Sandbox Code Playgroud)
看起来,当命令“sleep 1”运行并且输入命令“date”时,4 天过去了。嗯,实际上没有。欢迎提出有关正在发生的事情的想法。
$ uname -a
Linux the_hostname 2.6.18-238.19.1.el5xen #1 SMP Fri Jul 15 08:16:59 EDT 2011 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
是的,它在虚拟机中。
$ hwclock --debug
hwclock from util-linux-ng 2.13.1.1
hwclock: Open of /dev/rtc failed, errno=2: No such file or directory.
No usable clock interface found.
Cannot access the Hardware Clock via …Run Code Online (Sandbox Code Playgroud) 我的 Apache logrotate 配置如下所示:
/var/log/http/*log {
monthly
dateext
dateformat .%Y.%m
[... rest stripped for brevity ...]
}
Run Code Online (Sandbox Code Playgroud)
这很好用,除了旋转文件名上的日期比日志实际涵盖的时间晚一个时间段,例如error_log.2012.09涵盖 2012-08-01 到 2012-08-31。
我意识到 Apache 有其他选项(例如 cronolog),但我还有一堆其他日志需要轮换,除了这个问题之外,logrotate 确实正是我所需要的。
有没有办法让 logrotate 在生成旋转的文件名时使用日期偏移量——或者,更好的是,找出前一个时间段?
我date在 Ubuntu 18.04 中发现了程序的奇怪行为。
因此,我认为date应该使用--date option并正确处理 +N 分钟:
date --date "2019-01-01 13:43:32 +1 minutes" "+%Y-%m-%d %H:%M:%S"
Run Code Online (Sandbox Code Playgroud)
但是,在 Ubuntu 16.04 中,我会得到:
2019-01-01 13:44:32
Run Code Online (Sandbox Code Playgroud)
在 18.04 中:
2019-01-01 12:44:32
Run Code Online (Sandbox Code Playgroud)
解决方案也是添加+1 hours,但是,等一下,为什么当我加一分钟时我会得到减一小时?
这曾经用于设置时区。我在 Alpine 3.9.4 上有一个容器,它可以工作:
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN apk del tzdata
Run Code Online (Sandbox Code Playgroud)
我现在正在使用 Alpine Linux v3.10.3 创建一个 Docker 容器,但它不再工作了。一位用户建议我需要复制到 /etc/localtime:
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apk del tzdata
Run Code Online (Sandbox Code Playgroud)
如果tzdata被删除,这些都不起作用。但是,如果tzdata不删除它们,它们会起作用。为什么是这样?
我有一份 DMARC 报告,其中包括:
<date_range>
<begin>1500249600</begin>
<end>1500335999</end>
</date_range>
Run Code Online (Sandbox Code Playgroud)
如何将日期转换为人类日期?
在巴西,今年总统决定我们不应该实行夏令时。因为我的 Centos 8 服务器时间不对,我的意思是,当我使用date时,显示的时间错了 1 小时。通常,当我设置服务器时,我会执行以下操作:
ln -s /usr/share/zoneinfo/Brazil/East /etc/localtime
Run Code Online (Sandbox Code Playgroud)
巴西东部时区现在是 -3,但使用时区上方的文件会得到 -2(因为出于某种原因,它错误地认为我们今年应该有夏令时,就像往常一样)。
那么我该如何解决这个问题?有没有一种方法可以告诉我的服务器每天根据政府的决定更新 zoneinfo 文件?让我们假设巴西总统今天决定我们明天应该进入夏令时。是否有国际组织提供根据当地政府决定更新的区域文件?
obs:我试过nano文件 /usr/share/zoneinfo/Brazil/East 但是奇怪的字符出现在屏幕上所以我放弃了编辑它。
当我在用户桌面 (xp pro) 上运行 psexec 时,我得到“客户端和服务器之间存在时间和/或日期差异。” 当我运行 at \clientname time /interactive "net time \server /set /y" 命令时,我也会得到“访问被拒绝”。我无法从我的 win2k3 服务器的 AD 用户和计算机实用程序访问该机器。
去机器是唯一的补救方法吗?
澄清:去机器上执行 net time 命令有效,但我想要一个远程解决方案。
后期解决方案详细信息:
感谢 Kyle 提供本地帐户 psexec 解决方案,我能够实现全远程修复。在我的网络中,所有 PC 都具有相同的本地管理员帐户和相同的密码。Kyle 的远程解决方案起初似乎失败了,但这是因为我们还有一个活动域管理员帐户,其登录凭据完全相同。禁用该帐户后,我就可以使用本地管理员凭据执行 psexec:
>psexec \\systemname -u Administrator cmd
Run Code Online (Sandbox Code Playgroud)
奇怪的是,一旦我加入了 psexec,无论我多么努力,我都做不到 time 或 net time。我什至会远程执行 net time 并且它似乎有效,但是当我查看本地的“at”命令时,它显示它“无法启动”。
但是,我确实注意到,一旦我使用本地管理员帐户成功建立了远程连接,我现在就可以使用我的个人域帐户执行常规 psexec 以及将系统名称输入到资源管理器中,如下所示:

既然我可以远程访问计划任务,我只需使用我的域管理员帐户凭据通过此运行行创建一个网络时间计划任务:
net time \\servername /set /yes
Run Code Online (Sandbox Code Playgroud)
做了一个右键单击>运行,就是这样。由于这看起来很奇怪,我在另一个桌面上进行了实验,设置时间关闭,复制之前的“客户端和服务器之间存在时间和/或日期差异”条件,然后成功应用相同的修复程序!
我正在使用“date”命令来执行一些简单的日期算术。“-d”选项让我可以这样做,但是手册页对于什么是有效数据非常不清楚。什么是所有可接受的选项,我该如何解决?
我可以使用这个命令来确定 5 分钟前的日期: date -d "5-minutes-ago" +%H:%M
此命令也适用: date -d "-5 分钟" +%H:%M
我偶然/沮丧地偶然发现了这些选项。我在文档中没有看到“分钟前”或“-X 分钟”选项。
我会使用 Perl 来做算术,但不幸的是我不能安装任何额外的 Perl 包。
date ×10
linux ×2
timezone ×2
alpine ×1
batch ×1
debian ×1
dmarc ×1
docker ×1
formatting ×1
logging ×1
logrotate ×1
ms-dos ×1
time ×1
timestamp ×1
ubuntu-16.04 ×1
ubuntu-18.04 ×1
windows-xp ×1