记录于此,以便自己参考。
==============================================================
理论知识:设置系统日期和时间
初始日期格式
DATE="2010/08/20"
得到新的格式: 08/2010/20
NEWDATE=$(echo "$DATE" | awk --source 'BEGIN {FS="/"}' --source '{print $2 "/" $1 "/" $3}')
得到年
Y=$(echo $NEWDATE | sed "s/^...//" | sed "s/\/.*$//")
得到月
M=$(echo $NEWDATE | sed "s/\/.*$//")
得到日
D=$(echo $NEWDATE | sed "s/^........//" | sed "s/ .*$//")
或者
D=$(echo $NEWDATE | sed "s/^.\{8\}//" | sed "s/ .*$//")
初始时间格式
TIME=“19:20:50”
得到小时和分钟的格式:1920
H=$(echo $TIME | sed "s/^.* //" | sed "s/://g" | sed "s/..$//")
得到date命令需要的格式: date MMDDhhmm[[CC]YY][.ss],即:月 日 时 分 年(前2位) 年(后2位) 秒
DT=(echo $M$D$H$Y)
设置时间:
date $DT
设置硬件时间和系统时间同步
hwclock --systohc --localtime
=======================================================================
使用精确的时,分,秒 来设置
初始时间格式
TIME=“19:20:50”
小时:
h=$(echo $TIME | sed "s/^.* //" | awk --source 'BEGIN {FS=":"}' --source '{print $1}')
分钟:
m=$(echo $TIME | sed "s/^.* //" | awk --source 'BEGIN {FS=":"}' --source '{print $2}')
秒:
s=$(echo $TIME | sed "s/^.* //" | awk --source 'BEGIN {FS=":"}' --source '{print $3}')
得到date命令需要的格式: date MMDDhhmm[[CC]YY][.ss],即:月 日 时 分 年(前2位) 年(后2位) 秒
DT_NEW=$(echo $M$Y$h$m$D.$s)
设置时间:
date $DT_NEW
设置硬件时间和系统时间同步
hwclock --systohc --localtime
===========================================================================
也可以分别设置日期 和 时间,例如:
date -s 20100820
date -s 19:20:50
============================================================================
一个实际的例子:(只设置了日期)
#!/bin/bash
ZENITY=$(which zenity)
# TMP="/tmp/zenity_calendar.$$"
TITLE="请选择日期"
TEXT="鼠标点击,选择日期"
# get date format: 2011/09/01
DATE=$($ZENITY --calendar --title="$TITLE" --text="$TEXT" --date-format=%Y/%m/%d)
# exit if user press [Cancel] or X button
if [ "$?" != "0" ]; then
exit
fi
# get newdate format: 09/2011/01
NEWDATE=$(echo "$DATE" | awk 'BEGIN {FS="/"} {print $2 "/" $1 "/" $3}')
# get year
Y=$(echo $NEWDATE | sed "s/^...//" | sed "s/\/.*$//")
# get month
M=$(echo $NEWDATE | sed "s/\/.*$//")
# get date
D=$(echo $NEWDATE | sed "s/^.\{8\}//" | sed "s/ .*$//")
# get date command format: date -s 20110901
DATE_SET=$(echo $Y$M$D)
# set date
date -s $DATE_SET
# sychronise hardclock and sysclock
hwclock --systohc --localtime