欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Powershell小技巧之获取当前的时间并转换为时辰

程序员文章站 2022-04-19 11:04:54
午时三刻已到,行刑,刀下留人,现在到底是不是午时,能否让powershell告诉我呢? 好的, 没问题。从晚上23点到凌晨2点之间属于子时,每两个小时一个时辰,依次为“子...

午时三刻已到,行刑,刀下留人,现在到底是不是午时,能否让powershell告诉我呢?

好的, 没问题。从晚上23点到凌晨2点之间属于子时,每两个小时一个时辰,依次为“子丑寅卯辰巳午未申酉戌亥”。

函数获取当前时辰
用powershell脚本实现:

function get-chinatimealias
{
 param(
 [validaterange(0,23)]
 [int]$hour = (get-date).hour
 )
 $timealiasarray='子丑寅卯辰巳午未申酉戌亥'
 [int]$index=0
 if($hour -eq 22){ $index=11 }
 else{
 $index=[math]::floor( ( $hour+1 ) % 23 / 2 )
 }
 return $timealiasarray[ $index ] + "时"
}

获取当前的时辰
ps> get-date

2014年9月17日 23:17:58

复制代码 代码如下:

ps> get-chinatimealias
子时

获取指定小时数对应的时辰

复制代码 代码如下:

ps> get-chinatimealias 12
午时

打印所有的时辰和对应的时间段
输入

$timearray=@(23)+0..22
for($i=0;$i -lt $timearray.length; $i=$i+2)
{
 $starthour = $timearray[$i].tostring().padleft(2,'0')
 $endhour = $timearray[$i+1].tostring().padleft(2,'0')
 $timealias = get-chinatimealias $timearray[$i]
 [pscustomobject]@{
  时辰  = $timealias;
  时间段 = ('{0}:00-{1}:59' -f $starthour,$endhour)
  }
}

输出

复制代码 代码如下:

时辰 时间段       
-- ---       
子时 23:00-00:59
丑时 01:00-02:59
寅时 03:00-04:59
卯时 05:00-06:59
辰时 07:00-08:59
巳时 09:00-10:59
午时 11:00-12:59
未时 13:00-14:59
申时 15:00-16:59
酉时 17:00-18:59
戌时 19:00-20:59
亥时 21:00-22:59

总结
字符串本身就是字符数组,没必要把子丑寅卯等单独保存成数组。
用求模和22特殊处理有效规避 对每一个时辰单独条件判断。