linux 时区文件的规则,linux – 如何将POSIX时间转换为Olson时区文件...
因为我需要它来处理我的特殊情况,所以我做了一个小的bash脚本.
我知道这并不是涵盖所有情况.但至少你可以用它作为参考.
我的任务是解析字符串:
“EST%dEDT%d,M%d.%d.%d/%d:%d,M%d.%d.%d/%d:%d”
例:
EST5EDT4,M1.3.0/2:00,M11.2.6/2:00
$1 – POSIX字符串
$2 – 输出文件夹的路径
$3 – 输出的文件名
timezoneposix2olson()
{
posix=$1
MONTHS=(ZERO Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
DAYS=(Sun Mon Tue Wed Thu Fri Sat)
IFS=',' tokens=( $posix )
# parse EST5EDT4
tmp=${tokens[0]#*EST}
no_dst_offset=${tmp%EDT*}
no_dst_offset=$(( no_dst_offset*-1 ))
dst_offset=${tokens[0]#*EDT}
dst_offset=$(( dst_offset*-1 ))
#parse M1.3.0/2:00
switch_time1=${tokens[1]#*/}
temp=${tokens[1]#*M}
switch_month1=${temp%%.*}
temp=${tokens[1]#*.}
switch_week1=${temp%.*}
temp=${tokens[1]##*.}
switch_day1=${temp%/*}
#parse M11.2.6/2:00
switch_time2=${tokens[2]#*/}
temp=${tokens[2]#*M}
switch_month2=${temp%%.*}
temp=${tokens[2]#*.}
switch_week2=${temp%.*}
temp=${tokens[2]##*.}
switch_day2=${temp%/*}
if [ $switch_week1 -eq 5 ] ; then
rule_day1=last${DAYS[$switch_day1]}
else
rule_day1=$(( (switch_week1-1)*7+1 ))
rule_day1="${DAYS[$switch_day1]}>=${rule_day1}"
fi
if [ $switch_week2 -eq 5 ] ; then
rule_day2=last${DAYS[$switch_day2]}
else
rule_day2=$(( (switch_week2-1)*7+1 ))
rule_day2="${DAYS[$switch_day1]}>=${rule_day2}"
fi
delta=$((dst_offset - no_dst_offset))
delta="${delta#-}:00"
if [ $dst_offset -gt 0 ] ; then
offset_mod1="+$dst_offset"
else
offset_mod1=$dst_offset
fi
if [ $no_dst_offset -gt 0 ] ; then
offset_mod2="+$no_dst_offset"
else
offset_mod2=$no_dst_offset
fi
local olson_file="$2/$3.zone"
echo "Rule LOCAL 1996 max - ${MONTHS[$switch_month1]} $rule_day1 $switch_time1 $delta $offset_mod1" > $olson_file
echo "Rule LOCAL 1996 max - ${MONTHS[$switch_month2]} $rule_day2 $switch_time2 0 $offset_mod2" >> $olson_file
echo "Zone Localtime $no_dst_offset LOCAL GMT%s" >> $olson_file
zic -d $2 -v $olson_file
}
linux 时区文件的规则,linux – 如何将POSIX时间转换为Olson时区文件...相关推荐
- mysql utc时间转换语句_MySQL可以将存储的UTC时间转换为本地时区吗?
MySQL是否可以在正常的select语句中直接将存储的UTC时间转换为本地时区:ed时间? 假设您有一些带有时间戳(UTC)的数据. CREATE TABLE `SomeDateTable` ( ` ...
- linux进程pid分配规则,Linux进程pid分配法
一. 概述 Android系统创建进程,最终的实现还是调用linux fork方法,对于linux系统每个进程都有唯一的 进程ID(值大于0),也有pid上限,默认为32768. pid可重复利用,当 ...
- UTC时间转换为当前时区时间
发现问题:后台传过来的时间与当前时区时间不一样,经比对发现其为UTC时间 需求:展示的应该是当前时区的时间 解决方法:moment插件 1.安装 npm install moment --save 2 ...
- linux 时区文件的规则,linux下时区的一些认识
最近搞ONVIF,在时间接口中有一个时区的字段,需要使用POSIX格式的时区,ONVIF手册要求符合IEEE100.3.1的第8章节,但要注册才能看IEEE标准,我印象中以前下载过,但找不到了.幸好, ...
- linux用户密码修改规则,linux怎么设置密码规则
准备工作: 安装 PAM 的 cracklib 模块,cracklib 能提供额外的密码检查能力. Debian.Ubuntu 或 Linux Mint 系统上: $ sudo apt-get ins ...
- linux怎么清除防火墙规则,linux怎么查看防火墙是否开启并清除防火墙规则?
iptables是linux下的防火墙组件服务,相对于windows防火墙而言拥有更加强大的功能,下面我们就来看看linux系统中关于iptables的一般常见操作,判断linux系统是否启用了ipt ...
- linux用户密码默认规则,linux用户密码策略测试
1.linux普通用户默认密码策略: 用passwd修改用户密码,常常提示"BAD PASSWORD: it is based on a dictionary word".实际上l ...
- js将北京时间转换为当前时区的时间
function dateBJtoLocal(time) {// 当前时区与标准地区的差值(分钟)const offset = new Date().getTimezoneOffset();// 北京 ...
- java 字符串转utc时间_在Java中将UTC时间转换为本地时区
我知道这个主题已被殴打致死,但在搜寻了这个问题几个小时之后,我不得不问. 我的问题:根据客户端应用程序(iphone)的当前时区对服务器上的日期进行计算.客户端应用程序以秒为单位告诉服务器,其时区距G ...
最新文章
- asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
- ssh suse 配置_SUSE+linux+配置节点间的SSH信任关系
- php 精品课程,php51精品课程高级版
- java display属性_JavaScript中的style.display属性操作
- Linux命令之basename 命令
- Oracle命令--表空间管理
- Google正在失去DeepMind?
- Python 进阶 —— 使用 map reduce
- YAF 接口 2016-10-27
- pmp项目变更的流程图_【PMP】变更流程图与说明
- AUTOCAD——坐标标注
- 【web-攻击用户】(9.3.2)诱使用户执行操作--请求伪造——UI伪装
- bmp批量转换jpg的方法
- python爬虫requests模块
- 如何在服务器中搭建网站
- libxml主要函数说明
- 新媒体运营适合什么样的人
- MacOS安装之:此Apple ID 未用于 App Store
- PyQt5使用笔记(一) 处理excel文件获取页眉页脚信息 2020.03.14
- 像李欣频一样思考人生~
热门文章
- CV之IA:利用人工智能算法实现图像动画(以让古代皇帝画像以及古代四大美女画像动起来-来模仿偶像胡歌剧中角色表情动作为例-照片嗨起来)案例应用
- 从高级程序员-资深程序员-技术总监,我都为你整理好了学习路径
- KTV点歌系统数据库设计文档
- Python文字转语音文字转拼音
- python 语音识别培训使用Python和Keras创建简单语音识别引擎
- 邻接矩阵的存储方式实现图的广度和深度优先遍历
- Codeforces Round #546 (Div. 2) C. Nastya Is Transposing Matrices(矩阵转置的性质)
- httpd的MPM工作模式
- 由读写经济学文章所想到的
- 什么是嵌入式软件开发?