1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メモ どうしても七夕に入籍届を出したい人は高々2年待たされるだけなので安心

Last updated at Posted at 2025-07-08

よくよく考えると365mod7が1なので1曜日ずつずれていって、閏年がかかわってきても5曜日スキップするなんて事態にはならないので、特定の日付けが土日になるのは高々2年連続。7/7は祝日にならないっぽい(曖昧)のでそこは考えていない。

markdownで一覧したい
import datetime
import os

output_path = os.path.join(os.path.dirname(__file__), "tanabata_weekdays.md")
with open(output_path, "w", encoding="utf-8") as f:
    for year in range(1800, 2026):
        date = datetime.date(year, 7, 7)
        weekday = date.strftime('%A')  # 英語の曜日
        # 曜日を漢字一文字に変換
        weekday_kanji = {
            'Monday': '',
            'Tuesday': '',
            'Wednesday': '',
            'Thursday': '',
            'Friday': '',
            'Saturday': '**土**',
            'Sunday': '**日**'
        }[weekday]
        f.write(f"{year}:{weekday_kanji} ")
        if (year - 1899) % 10 == 0:
            f.write("\n")
実行結果

1800:月 1801:火 1802:水 1803:木 1804: 1805: 1806:月 1807:火 1808:木 1809:金
1810: 1811: 1812:火 1813:水 1814:木 1815:金 1816: 1817:月 1818:火 1819:水
1820:金 1821: 1822: 1823:月 1824:水 1825:木 1826:金 1827: 1828:月 1829:火
1830:水 1831:木 1832: 1833: 1834:月 1835:火 1836:木 1837:金 1838: 1839:
1840:火 1841:水 1842:木 1843:金 1844: 1845:月 1846:火 1847:水 1848:金 1849:
1850: 1851:月 1852:水 1853:木 1854:金 1855: 1856:月 1857:火 1858:水 1859:木
1860: 1861: 1862:月 1863:火 1864:木 1865:金 1866: 1867: 1868:火 1869:水
1870:木 1871:金 1872: 1873:月 1874:火 1875:水 1876:金 1877: 1878: 1879:月
1880:水 1881:木 1882:金 1883: 1884:月 1885:火 1886:水 1887:木 1888: 1889:
1890:月 1891:火 1892:木 1893:金 1894: 1895: 1896:火 1897:水 1898:木 1899:金
1900: 1901: 1902:月 1903:火 1904:木 1905:金 1906: 1907: 1908:火 1909:水
1910:木 1911:金 1912: 1913:月 1914:火 1915:水 1916:金 1917: 1918: 1919:月
1920:水 1921:木 1922:金 1923: 1924:月 1925:火 1926:水 1927:木 1928: 1929:
1930:月 1931:火 1932:木 1933:金 1934: 1935: 1936:火 1937:水 1938:木 1939:金
1940: 1941:月 1942:火 1943:水 1944:金 1945: 1946: 1947:月 1948:水 1949:木
1950:金 1951: 1952:月 1953:火 1954:水 1955:木 1956: 1957: 1958:月 1959:火
1960:木 1961:金 1962: 1963: 1964:火 1965:水 1966:木 1967:金 1968: 1969:月
1970:火 1971:水 1972:金 1973: 1974: 1975:月 1976:水 1977:木 1978:金 1979:
1980:月 1981:火 1982:水 1983:木 1984: 1985: 1986:月 1987:火 1988:木 1989:金
1990: 1991: 1992:火 1993:水 1994:木 1995:金 1996: 1997:月 1998:火 1999:水
2000:金 2001: 2002: 2003:月 2004:水 2005:木 2006:金 2007: 2008:月 2009:火
2010:水 2011:木 2012: 2013: 2014:月 2015:火 2016:木 2017:金 2018: 2019:
2020:火 2021:水 2022:木 2023:金 2024: 2025:月

環境構築

windowsでpython環境を作るなら

  • アプリ版
    • とてもらく
  • インストーラー
    • 野暮ったい
  • powershellのiwrコマンドでとってきて云々
    • 怖い
  • WSL(実質linuxで作るのと同じような手順)

uvを導入。参考 https://dev.classmethod.jp/articles/i-like-uv/

  1. powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" ←iex怖すぎ
  2. $env:Path = "C:\Users\「ユーザ」\.local\bin;$env:Path" ←この案内がでるけどターミナル切るたびにリセットされるので、恒久的に変えたい。というか、なんでこんなとこに入れてしまったんだ
    1. $oldPath = [System.Environment]::GetEnvironmentVariable("PATH", "Machine"); $newPath = "C:\Users\「ユーザ」\.local\bin;$oldPath"; [System.Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")

uv init mytanabata -> uv run python .\mytanabata\tanabata.py

おまけ

windowsでpython触るのやめよう
vscode + copilotのインラインチャット履歴は自動保存されないっぽいので手動保存するのがいいのかもしれない

コンソール色付き出力

pythonと真逆の環境で作業をしており、そこで手軽にコンソールに色付きの文字を出したかったが、無理筋だった(カーネル云々、コンソールプロセスの設定変更を云々だったのであまりにも面倒)。
文芸プログラミングとか、可視化とかしたいなら素直にjupyternotebookを使おう。

ps1ファイルを作成し、コンソール上で色付きで見るとしたら
import datetime
import os

output_path = os.path.join(os.path.dirname(__file__), "tanabata_weekdays.ps1")
with open(output_path, "w", encoding="utf-8-sig") as f:
    for year in range(1800, 2026):
        date = datetime.date(year, 7, 7)
        weekday = date.strftime('%A')  # 英語の曜日
        # 曜日を漢字一文字に変換
        weekday_kanji = {
            'Monday': 'Write-Host "" -NoNewline',
            'Tuesday': 'Write-Host "" -NoNewline',
            'Wednesday': 'Write-Host "" -NoNewline',
            'Thursday': 'Write-Host "" -NoNewline',
            'Friday': 'Write-Host "" -NoNewline',
            'Saturday': 'Write-Host "" -ForegroundColor Red -NoNewline',
            'Sunday': 'Write-Host "" -ForegroundColor Red -NoNewline'
        }[weekday]
        f.write(f'Write-Host "{year}:" -NoNewline; {weekday_kanji}\n')
        if (year - 1799) % 10 == 0:
            f.write('Write-Host "";')
ps1
Write-Host "1800:" -NoNewline; Write-Host "月 " -NoNewline
Write-Host "1801:" -NoNewline; Write-Host "火 " -NoNewline
Write-Host "1802:" -NoNewline; Write-Host "水 " -NoNewline
Write-Host "1803:" -NoNewline; Write-Host "木 " -NoNewline
Write-Host "1804:" -NoNewline; Write-Host "土 " -ForegroundColor Red -NoNewline
Write-Host "1805:" -NoNewline; Write-Host "日 " -ForegroundColor Red -NoNewline
Write-Host "1806:" -NoNewline; Write-Host "月 " -NoNewline
Write-Host "1807:" -NoNewline; Write-Host "火 " -NoNewline
Write-Host "1808:" -NoNewline; Write-Host "木 " -NoNewline
Write-Host "1809:" -NoNewline; Write-Host "金 " -NoNewline
Write-Host "";Write-Host "1810:" -NoNewline; Write-Host "土 " -ForegroundColor Red -NoNewline
Write-Host "1811:" -NoNewline; Write-Host "日 " -ForegroundColor Red -NoNewline
Write-Host "1812:" -NoNewline; Write-Host "火 " -NoNewline
Write-Host "1813:" -NoNewline; Write-Host "水 " -NoNewline
Write-Host "1814:" -NoNewline; Write-Host "木 " -NoNewline
Write-Host "1815:" -NoNewline; Write-Host "金 " -NoNewline
Write-Host "1816:" -NoNewline; Write-Host "日 " -ForegroundColor Red -NoNewline
Write-Host "1817:" -NoNewline; Write-Host "月 " -NoNewline
Write-Host "1818:" -NoNewline; Write-Host "火 " -NoNewline
Write-Host "1819:" -NoNewline; Write-Host "水 " -NoNewline
# ...
Write-Host "";Write-Host "2020:" -NoNewline; Write-Host "火 " -NoNewline
Write-Host "2021:" -NoNewline; Write-Host "水 " -NoNewline
Write-Host "2022:" -NoNewline; Write-Host "木 " -NoNewline
Write-Host "2023:" -NoNewline; Write-Host "金 " -NoNewline
Write-Host "2024:" -NoNewline; Write-Host "日 " -ForegroundColor Red -NoNewline
Write-Host "2025:" -NoNewline; Write-Host "月 " -NoNewline
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?