Вы должны войти, чтобы создавать сообщения и темы.

Твик с отображением порядкового номера недели в году

Используете ли вы номер недели где-либо в своей регулярной деятельности?
Использую, и это был бы очень полезный твик
Использую, но привык смотреть в других местах
Не использую, но было бы полезно иметь такой твик, если когда-нибудь понадобится
Не использую, и не заинтересован в таком твике
Мне все равно / Вообще не понял, о чем речь
Не использую, и не заинтересован в таком твике

Всем доброго дня!

Не нашел тему на форуме по данному вопросу, поэтому хочу поднять обсуждение о довольно специфичной функции.
Мне по целому ряду причин очень часто нужно знать, какой номер недели на данный момент. Приходится лезть в телефон, или гуглить, или в календаре почтового клиента смотреть.

Предлагаю рассмотреть возможность добавить твик, который тем или иным образом будет помещать номер недели либо в стандартный календарь (вызывается по клику на часы в трее), либо отображаться во всплывающем окне при наведении на часы в трее, либо отображаться прям в трее рядом с часами.

На гитхабе я нашел небольшую программу (T-Clock пользователя White-Tiger; T-Clock Redux в поиске), которая позволяет кастомизировать календарь и часы. Но ставить ее только ради того, чтобы смотреть номер недели, мне кажется избыточным.

Что думаете?

937, Добрый день.

Твик с точки зрения Win 10 Tweaker - это нечто, сделанное средствами самой системы. 
Я не думаю, что в системе есть такая функция.

Голова дана человеку не для того, чтобы кушать, а для того, чтобы думать.

Привет, просто создай скрипт PowerShell с командой:
СкопированоGet-Date -UFormat %V
Скопировано$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-Null
Запускай, когда нужно узнать число.

Цитата: Андрей от 29.05.2025, 14:12

937, Добрый день.

Твик с точки зрения Win 10 Tweaker - это нечто, сделанное средствами самой системы. 

Так и есть. Если я не ошибаюсь, вмешиваться в систему с помощью кода на C# - это тоже, условно, "средства системы" (например, эксплуатация системных библиотек).

Есть приложение, называется WindHawk. Оно опенсорсное, весь его исходник лежит прям на сайте разработчика. Я не знаю C#, поэтому мне сложно разобраться в том, как именно реализовано приложение. Но оно довольно сильно позволяет кастомизировать область часов в трее. 

Исходя из этого, я предполагаю, что написать твик, который будет помещать номер недели в часы не должно быть сложно или невозможно. Более того, твик, который добавляет день недели уже есть. Понимаю, что техническая реализация второго и первого может быть разной, но принципиально это довольно смежные изменения.

 

Если тут есть кто-нибудь, понимающий C# - посмотрите код WindHawk (вкладка Source Code прямо на оф.сайте), расскажите как там реализованы кастомизации.
У меня есть предположение, что реализация там через наложение/подмену интерфейса часов. Но, возможно, там изменения встраиваются в сам модуль часов панели задач и меняют её саму изнутри, а не подменяют/накладывают сторонний и визуально похожий интерфейс. Если это так, то, по идее, твик будет вполне возможно сделать.

Цитата: 𝐓𝐇𝐎𝐑𝐭𝐢𝐤 от 29.05.2025, 15:51

Привет, просто создай скрипт PowerShell с командой:
СкопированоGet-Date -UFormat %V

Привет.

Спасибо, но по поводу СкопированоGet-Date -UFormat %V известно, что оно возвращает не номер недели по стандарту ISO 8601 (как то требуется), а некий "номер недели Microsoft". Из-за такой подставы, на этот результат либо нельзя гарантированно опираться, либо нужно изобретать велосипед (workaround), чтобы получить стандартизированный результат. Более подробно об этом здесь.

Цитата: 937 от 30.05.2025, 10:26
Цитата: 𝐓𝐇𝐎𝐑𝐭𝐢𝐤 от 29.05.2025, 15:51

Привет, просто создай скрипт PowerShell с командой:
СкопированоGet-Date -UFormat %V

Привет.

Спасибо, но по поводу СкопированоGet-Date -UFormat %V известно, что оно возвращает не номер недели по стандарту ISO 8601 (как то требуется), а некий "номер недели Microsoft". Из-за такой подставы, на этот результат либо нельзя гарантированно опираться, либо нужно изобретать велосипед (workaround), чтобы получить стандартизированный результат. Более подробно об этом здесь.

Тогда, согласно этой статье, наиболее точный способ - использовать метод СкопированоGetWeekOfYear() из класса Скопировано[System.Globalization.Calendar] для наилучшей совместимости.

Финальный код:

Скопировано$calendar = [System.Globalization.CultureInfo]::InvariantCulture.Calendar
Скопировано$calendar.GetWeekOfYear((Get-Date), [System.Globalization.CalendarWeekRule]::FirstFourDayWeek, [DayOfWeek]::Monday)
Скопировано$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-Null

Лайкнул 937
937