0
点赞
收藏
分享

微信扫一扫

zenity 脚本设置系统日期和时间

记录于此,以便自己参考。
==============================================================
理论知识:设置系统日期和时间

初始日期格式
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

举报

相关推荐

0 条评论