因为我需要它来处理我的特殊情况,所以我做了一个小的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时区文件...相关推荐

  1. mysql utc时间转换语句_MySQL可以将存储的UTC时间转换为本地时区吗?

    MySQL是否可以在正常的select语句中直接将存储的UTC时间转换为本地时区:ed时间? 假设您有一些带有时间戳(UTC)的数据. CREATE TABLE `SomeDateTable` ( ` ...

  2. linux进程pid分配规则,Linux进程pid分配法

    一. 概述 Android系统创建进程,最终的实现还是调用linux fork方法,对于linux系统每个进程都有唯一的 进程ID(值大于0),也有pid上限,默认为32768. pid可重复利用,当 ...

  3. UTC时间转换为当前时区时间

    发现问题:后台传过来的时间与当前时区时间不一样,经比对发现其为UTC时间 需求:展示的应该是当前时区的时间 解决方法:moment插件 1.安装 npm install moment --save 2 ...

  4. linux 时区文件的规则,linux下时区的一些认识

    最近搞ONVIF,在时间接口中有一个时区的字段,需要使用POSIX格式的时区,ONVIF手册要求符合IEEE100.3.1的第8章节,但要注册才能看IEEE标准,我印象中以前下载过,但找不到了.幸好, ...

  5. linux用户密码修改规则,linux怎么设置密码规则

    准备工作: 安装 PAM 的 cracklib 模块,cracklib 能提供额外的密码检查能力. Debian.Ubuntu 或 Linux Mint 系统上: $ sudo apt-get ins ...

  6. linux怎么清除防火墙规则,linux怎么查看防火墙是否开启并清除防火墙规则?

    iptables是linux下的防火墙组件服务,相对于windows防火墙而言拥有更加强大的功能,下面我们就来看看linux系统中关于iptables的一般常见操作,判断linux系统是否启用了ipt ...

  7. linux用户密码默认规则,linux用户密码策略测试

    1.linux普通用户默认密码策略: 用passwd修改用户密码,常常提示"BAD PASSWORD: it is based on a dictionary word".实际上l ...

  8. js将北京时间转换为当前时区的时间

    function dateBJtoLocal(time) {// 当前时区与标准地区的差值(分钟)const offset = new Date().getTimezoneOffset();// 北京 ...

  9. java 字符串转utc时间_在Java中将UTC时间转换为本地时区

    我知道这个主题已被殴打致死,但在搜寻了这个问题几个小时之后,我不得不问. 我的问题:根据客户端应用程序(iphone)的当前时区对服务器上的日期进行计算.客户端应用程序以秒为单位告诉服务器,其时区距G ...

最新文章

  1. asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
  2. ssh suse 配置_SUSE+linux+配置节点间的SSH信任关系
  3. php 精品课程,php51精品课程高级版
  4. java display属性_JavaScript中的style.display属性操作
  5. Linux命令之basename 命令
  6. Oracle命令--表空间管理
  7. Google正在失去DeepMind?
  8. Python 进阶 —— 使用 map reduce
  9. YAF 接口 2016-10-27
  10. pmp项目变更的流程图_【PMP】变更流程图与说明
  11. AUTOCAD——坐标标注
  12. 【web-攻击用户】(9.3.2)诱使用户执行操作--请求伪造——UI伪装
  13. bmp批量转换jpg的方法
  14. python爬虫requests模块
  15. 如何在服务器中搭建网站
  16. libxml主要函数说明
  17. 新媒体运营适合什么样的人
  18. MacOS安装之:此Apple ID 未用于 App Store
  19. PyQt5使用笔记(一) 处理excel文件获取页眉页脚信息 2020.03.14
  20. 像李欣频一样思考人生~

热门文章

  1. CV之IA:利用人工智能算法实现图像动画(以让古代皇帝画像以及古代四大美女画像动起来-来模仿偶像胡歌剧中角色表情动作为例-照片嗨起来)案例应用
  2. 从高级程序员-资深程序员-技术总监,我都为你整理好了学习路径
  3. KTV点歌系统数据库设计文档
  4. Python文字转语音文字转拼音
  5. python 语音识别培训使用Python和Keras创建简单语音识别引擎
  6. 邻接矩阵的存储方式实现图的广度和深度优先遍历
  7. Codeforces Round #546 (Div. 2) C. Nastya Is Transposing Matrices(矩阵转置的性质)
  8. httpd的MPM工作模式
  9. 由读写经济学文章所想到的
  10. 什么是嵌入式软件开发?