博客园  :: 首页  :: 管理

对于其他编程语言,如python,都可以很轻松的通过给定的一个日期,计算出他属于那一个年份的那一个周数

不过对于Powershell 需要自己多写几步,才能计算出来,因为没有直接内置的的方法或者函数

这里我们通过如下Powershell脚本代码、将指定的日期 xxxx-xx-xx 转换成 年份周数 的格式

$MyDate = '2021-01-01'


# Author:QQ-5201351
$DateObj = [datetime]::ParseExact($MyDate, 'yyyy-MM-dd', [System.Globalization.CultureInfo]::InvariantCulture)

# 获取该日期是星期几(Monday=1, ..., Sunday=7)
$dayOfWeek = [int]$DateObj.DayOfWeek
if ($dayOfWeek -eq 0) { $dayOfWeek = 7 }  # 将 Sunday 从 0 改为 7

# 计算本周的星期四(Thursday 是 4)
$thursdayOffset = 4 - $dayOfWeek
$thursday = $DateObj.AddDays($thursdayOffset)

# ISO 年份 = 星期四所在的公历年份
$isoYear = $thursday.Year

# 使用 GregorianCalendar 计算周数(基于 Monday + FirstFourDayWeek)
$calendar = [System.Globalization.GregorianCalendar]::new()
$isoWeek = $calendar.GetWeekOfYear(
    $DateObj,
    [System.Globalization.CalendarWeekRule]::FirstFourDayWeek,
    [DayOfWeek]::Monday
)

# 格式化输出(周数补零到两位)
Write-Output ("{0}{1:D2}" -f $isoYear, $isoWeek)

执行标准为: ISO 8601是由国际标准化组织(ISO)制定的日期和时间表示方法国际标准

所以,这里代码运行结果:202053

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19532093