linux中用shell获取昨天、明天或多天前的日期:
在Linux中对man date -d 参数说的比较模糊,以下举例进一步说明:
# -d, --date=STRING display time described by STRING, not `now’
[root@Gman root]# date -d next-day +%Y%m%d #明天日期
20091024
[root@Gman root]# date -d last-day +%Y%m%d #昨天日期
20091022
[root@Gman root]# date -d yesterday +%Y%m%d #昨天日期
20091022
[root@Gman root]# date -d tomorrow +%Y%m%d # 明天日期
20091024
[root@Gman root]# date -d last-month +%Y%m #上个月日期
200909
[root@Gman root]# date -d next-month +%Y%m #下个月日期
200911
[root@Gman root]# date -d next-year +%Y #明年日期
2010
DATE=$(date +%Y%m%d --date ’2 days ago’) #获取昨天或多天前的日期
名称 : date
使用权限 : 所有使用者
使
用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal]
[--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT]
[MMDDhhmm[[CC]YY][.ss]]
说明 : date 能用来显示或设定系统的日期和时间,在显示方面,使用者能设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
时间方面 :
% : 印出
% %n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期和时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],
其中 MM 为月份,
DD 为日,
hh 为小时,
mm 为分钟,
CC 为年份前两位数字,
YY 为年份后两位数字,
ss 为秒数
把计 :
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
例子 :
显示时间后跳行,再显示目前日期 : date +%T%n%D
显示月份和日数 : date +%B %d
显示日期和设定时间(12:34:56) : date --date 12:34:56
设置系统当前时间(12:34:56):date --s 12:34:56
注
意 : 当你不希望出现无意义的 0 时(比如说 1999/03/07),则能在标记中插入 - 符号,比如说 date +%-H:%-M:%-S
会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS
中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
ntp时间同步
linux系统下默认安装了ntp服务,手动进行ntp同步如下
ntpdate ntp1.nl.net
当然,也能指定其他的ntp服务器
-------------------------------------------------------------------
扩展功能
date 工具可以完成更多的工作,不仅仅只是打印出当前的系统日期。您可以使用它来得到给定的日期究竟是星期几,并得到相对于当前日期的相对日期。了解某一天是星期几
GNU 对 date 命令的另一个扩展是 -d 选项,当您的桌上没有日历表时(UNIX 用户不需要日历表),该选项非常有用。使用这个功能强大的选项,通过将日期作为引号括起来的参数提供,您可以快速地查明一个特定的日期究竟是星期几:
$ date -d "nov 22"
Wed Nov 22 00:00:00 EST 2006
$
在本示例中,您可以看到今年的 11 月 22 日是星期三。
所以,假设在 11 月 22 日召开一个重大的会议,您可以立即了解到这一天是星期三,而这一天您将赶到驻地办公室。
获得相对日期
d 选项还可以告诉您,相对于 当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。通过将这个相对偏移使用引号括起来,作为 -d 选项的参数,就可以完成这项任务。
例如,您需要了解两星期以后的日期。如果您处于 Shell 提示符处,那么可以迅速地得到答案:
$ date -d ’2 weeks’
关于使用该命令,还有其他一些重要的方法。使用 next/last指令,您可以得到以后的星期几是哪一天:
$ date -d ’next monday’ (下周一的日期)
$ date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
$ date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
$ date -d last-month +%Y%m(上个月是几月)
$ date -d next-month +%Y%m(下个月是几月)
使用 ago 指令,您可以得到过去的日期:
$ date -d ’30 days ago’ (30天前的日期)
您可以使用负数以得到相反的日期:
$ date -d ’dec 14 -2 weeks’ (相对:dec 14这个日期的两周前的日期)
$ date -d ’-100 days’ (100天以前的日期)
$ date -d ’50 days’(50天后的日期)
这个技巧非常有用,它可以根据将来的日期为自己设置提醒,可能是在脚本或 Shell 启动文件中,如下所示:
DAY=`date -d ’2 weeks’ +"%b %d"`
if test "`echo $DAY`" = "Aug 16"; then echo ’Product launch is now two weeks away!’; fi
分享到:
相关推荐
Linux QT4 显示时间日期 在 Linux QT4 应用程序中,如何显示实时的时间和日期是一个常见的需求。本文将通过一个简单的示例程序,演示如何使用 QT4 库在 Linux 平台下显示实时的时间和日期。 第一步:创建 Widget ...
在Linux系统中,获取某个特定日期对应的月末日期是一项常见的任务,尤其在数据分析、日志处理或者脚本编程中。本文将详细介绍如何利用内置的`date`命令来实现这个功能。 首先,我们需要理解`date`命令的基本用法。`...
在Linux操作系统中,获取系统时间是一项基础且重要的任务。系统时间是计算机运行过程中用来记录当前时间的数据,它对于系统的各种操作,如日志记录、进程调度等都有着关键作用。本篇将详细介绍如何在Linux中根据需求...
本文将深入探讨Linux系统中的日期时间显示、设置、同步以及通过NTP协议进行时间校准的方法。 首先,Linux系统提供了多种命令来查看当前的日期和时间。最常用的是`date`命令,例如`date`会显示操作系统的日期时间,...
在这个项目中,我们将讨论如何在MFC控制台应用程序中获取网络时间,以及两种不同的实现方法。 首先,让我们了解基本概念。网络时间通常指的是NTP(Network Time Protocol),这是一种协议,用于同步计算机的时钟。...
在编程领域,获取系统日期和时间是一项基本操作,无论是在Windows、Linux还是Mac OS等操作系统中,都有多种方法可以实现这一功能。系统日期和时间的获取对于开发各种应用程序,如日志记录、计时器、任务调度等都至关...
在深入探讨ARM2440平台上LINUX系统时间的设置与修改方法之前,首先需要理解系统时间与硬件时间的概念及其在Linux环境下的作用。 - **硬件时间**:指的是计算机主板上内置的实时时钟(RTC),即我们常说的“BIOS时钟...
通过灵活地使用该命令,用户可以方便地获取当前时间、更改系统时间、查询文件最后修改时间等。接下来将详细介绍`date`命令的各种用途及参数。 #### 基本用法 1. **显示当前日期和时间** - 命令格式:`date` - ...
然后,从 rtc_tm 结构体里获取日期和时间参数,并将日期时间参数设置为操作系统时间。 例如,要读取 RTC 时间并设置操作系统时间,可以使用以下步骤: 1. 读取 RTC 时间:`retval = ioctl(fd, RTC_RD_TIME, &rtc_...
总结,通过Qt 4.8.5,我们可以利用`QDateTime`和`QProcess`类来获取和设置Linux系统的日期和时间,以及管理时区。在进行这些操作时,理解Linux的命令行工具和权限管理是非常重要的。同时,要确保代码的安全性和用户...
取aix、linux上一个月的日期shell脚本;
本篇文章将详细讲解如何在VC++环境下实现从网络时间服务器获取时间,并校正本地机器时间的过程。 首先,我们需要理解网络时间协议(Network Time Protocol,NTP)。NTP是一种用于同步网络上多个计算机时间的协议,...
`SYSTEMTIME` 结构体是Windows API中的一个时间表示方式,它可以获取到日期和时间的详细信息,包括毫秒级别的时间差。但需要注意的是,`SYSTEMTIME` 并不直接提供微秒和纳秒级别的精度。要使用 `SYSTEMTIME`,需要...
当点击这个按钮时,会调用applyTimeDate槽函数,该函数获取当前设置的时间和日期,然后使用`sudo systemctl set-time`命令将它们设置为系统时间。注意,由于修改系统时间通常需要管理员权限,因此这里使用了`sudo`。...
以上就是Linux C编程中关于时间获取和设置的基本知识,通过理解这些函数和结构体,你可以轻松地在程序中处理时间相关的任务。在实际开发中,结合实践和代码示例,能让你对这些知识点有更深刻的理解。
在 Linux 操作系统中,了解如何查看文件的修改日期对于日常的系统管理和文件维护工作至关重要。这篇文章将介绍四种方法帮助你获取文件的这一关键信息。 首先,我们可以使用 `stat` 命令来查看文件的详细属性,包括...
本文将详细介绍 Linux 系统中时区和时间的修改方法。 一、修改时区 时区的设置对系统的时间戳和日期的正确性产生重要影响。在 Linux 系统中,时区的设置可以通过手动修改时区文件或使用图形化命令实现。 1. 手动...
在Linux环境中,C++编程语言可以用来实现自动化处理任务,比如按照时间戳排序并删除文件夹中的文件。这个任务涉及到文件操作、时间戳比较以及控制删除文件的数量。下面将详细介绍如何实现这一功能。 首先,我们需要...
通过灵活地使用该命令的不同选项,用户不仅可以获取当前的日期时间信息,还能对这些信息进行格式化输出,甚至可以直接设置系统的日期时间。 #### 二、Date命令的基本语法 `date` 命令的基本语法如下: ```bash ...