時計の絵文字について
コードポイント | 絵文字 | 時 | 分 |
---|---|---|---|
128336 | 🕐 | 1 | 0 |
128337 | 🕑 | 2 | 0 |
128338 | 🕒 | 3 | 0 |
128339 | 🕓 | 4 | 0 |
128340 | 🕔 | 5 | 0 |
128341 | 🕕 | 6 | 0 |
128342 | 🕖 | 7 | 0 |
128343 | 🕗 | 8 | 0 |
128344 | 🕘 | 9 | 0 |
128345 | 🕙 | 10 | 0 |
128346 | 🕚 | 11 | 0 |
128347 | 🕛 | 12 | 0 |
128348 | 🕜 | 1 | 30 |
128349 | 🕝 | 2 | 30 |
128350 | 🕞 | 3 | 30 |
128351 | 🕟 | 4 | 30 |
128352 | 🕠 | 5 | 30 |
128353 | 🕡 | 6 | 30 |
128354 | 🕢 | 7 | 30 |
128355 | 🕣 | 8 | 30 |
128356 | 🕤 | 9 | 30 |
128357 | 🕥 | 10 | 30 |
128358 | 🕦 | 11 | 30 |
128359 | 🕧 | 12 | 30 |
つまり文字コードを得るには?
-
128335 + 時 % 12
- 12時, 24時は0じゃなく12
- 30分のときは + 12
関数を作る
function clockEmojiNow {
$now = Get-Date
clockEmoji $now.Hour $now.Minute
}
function clockEmoji($h, $m){
$h = $h % 12
$code = 128335
$code += $h -ne 0 ? $h : 12
$code += $m -lt 30 ? 0 : 12
[char]::ConvertFromUtf32($code)
}
PS [C:\]> clockEmoji 5 55 🕠 PS [C:\]> clockEmojiNow 🕝 PS [C:\]> get-date 2023年12月22日 2:54:07
よさげ
プロンプトに追加
code $profile
でPowerShellのbashrc
的なものを開く。
ここにprompt
って関数を作って文字列返せばプロンプトをカスタマイズできる。
さっきの関数も書き込んでプロンプトを作成。
function prompt(){
"PS $(clockEmojiNow)[$((get-item $pwd).Name)]> "
}
こんな感じ
PS 🕝[C:\]>
おまけ: 時計を回す
function rotateClock {
$delayMs = 100
for ($i = 0; $i -lt 12; $i++) {
Write-Host "`b`b$(clockEmoji $i)" -NoNewline
Start-Sleep -Milliseconds $delayMs
Write-Host "`b`b$(clockEmoji $i 30)" -NoNewline
Start-Sleep -Milliseconds $delayMs
}
Write-Host "`b`b$(clockEmoji 0 0)"
}
上記関数を$profile
に書き込んでrotateClock
すれば時計が回る
30分刻みだから回ってる感じしないし月のほうが分かりやすい
function rotateMoon($delayMs = 100, $rotate = 3) {
for ($i = 0; $i -lt 8 * $rotate; $i++) {
$code = $i % 8 + 127761
$char = [char]::ConvertFromUtf32($code)
Write-Host "`b`b$char" -NoNewline
Start-Sleep -Milliseconds $delayMs
}
Write-Host "`b`b🌑" -NoNewline
}
tips
-
Write-Host
で改行無くすには-NoNewline
- powershellの文字のエスケープは
\
じゃなくバッククォートらしい- `bがバックスペース。前の文字を消去する
- 絵文字なので二文字分を消す