Номер недели с датой получения - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть команда powershell:

Get-Date -UFormat %V

В понедельник отображается плохой номер недели, и я не знаю почему. Как добавить один, чтобы получить правильный номер недели? Я установил везде, что первый день недели - понедельник, но это не помогло. Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Попробуйте использовать этот метод, чтобы получить номер недели в году. Найдено здесь

function Get-WeekNumber([datetime]$DateTime = (Get-Date)) {
    $cultureInfo = [System.Globalization.CultureInfo]::CurrentCulture
    $cultureInfo.Calendar.GetWeekOfYear($DateTime,$cultureInfo.DateTimeFormat.CalendarWeekRule,$cultureInfo.DateTimeFormat.FirstDayOfWeek)
}

Get-WeekNumber  # -> 7, for instance
1 голос
/ 13 февраля 2020

За чем вы следуете - это номер недели ISO8601, где

  • неделя начинается в понедельник
  • неделя 1 - это первая неделя, которая содержит четверг

Чтобы получить этот номер недели, вы можете использовать следующую функцию:

function Get-Iso8601WeekNumber([datetime]$DateTime = (Get-Date)) {
    # ISO8601: Week starts on Monday and Week 1 is the week that contains Thursday
    $calendar = [CultureInfo]::InvariantCulture.Calendar
    $dow      = $calendar.GetDayOfWeek($DateTime)
    if ($dow -ge [DayOfWeek]::Monday -and $dow -le [DayOfWeek]::Wednesday) {
        $DateTime = $DateTime.AddDays(3)
    }
    return $calendar.GetWeekOfYear($DateTime, [Globalization.CalendarWeekRule]::FirstFourDayWeek, [DayOfWeek]::Monday)
}

Используя ваш пример

Get-Iso8601WeekNumber "2020-02-17"

возвращает 8

Обратите внимание на использование InvariantCulture вместо CurrentCulture

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...