2
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

Perl6でプレミアムフライデーを求める

世の中では月の最終金曜日をプレミアムフライデーと呼ぶそうですね(目をそらしながら)

Perl6 でそのプレミアムフライデーを求めてみたいと思います。

ソース

Perl6 の Date や DateTime には最終◯曜日を求めるメソッドは無かった筈なので一手間必要です。

pf.pl6
# 金曜日は5
my Int $friday := 5;

# 2017年02月からスタート
my DateTime $d .= new( :2017year :2month :1day :15hour :0minute :0second );

# 100ヶ月分のプレミアムフライデー
for 0..^100 -> $later {
  # 翌月初の1日前、つまり当月末日
  my DateTime $e = $d.clone.later(month => $later + 1).earlier(day => 1);

  # 当月末日の曜日
  my Int $dow = $e.day-of-week;

  # 金曜日からの差分(日数)
  my Int $diff = ($dow >= $friday) ?? $dow - $friday !!  7 + $dow - $friday;

  # 当月末日から、差分だけ前の日
  say $e.earlier(day => $diff);
}
出力
2017-02-24T15:00:00Z
2017-03-31T15:00:00Z
2017-04-28T15:00:00Z
2017-05-26T15:00:00Z
2017-06-30T15:00:00Z
2017-07-28T15:00:00Z
2017-08-25T15:00:00Z
2017-09-29T15:00:00Z
2017-10-27T15:00:00Z
2017-11-24T15:00:00Z
2017-12-29T15:00:00Z
2018-01-26T15:00:00Z
2018-02-23T15:00:00Z
2018-03-30T15:00:00Z
2018-04-27T15:00:00Z
2018-05-25T15:00:00Z
2018-06-29T15:00:00Z
2018-07-27T15:00:00Z
2018-08-31T15:00:00Z
2018-09-28T15:00:00Z
2018-10-26T15:00:00Z
2018-11-30T15:00:00Z
2018-12-28T15:00:00Z
2019-01-25T15:00:00Z
2019-02-22T15:00:00Z
2019-03-29T15:00:00Z
2019-04-26T15:00:00Z
2019-05-31T15:00:00Z
2019-06-28T15:00:00Z
2019-07-26T15:00:00Z
2019-08-30T15:00:00Z
2019-09-27T15:00:00Z
2019-10-25T15:00:00Z
2019-11-29T15:00:00Z
2019-12-27T15:00:00Z
2020-01-31T15:00:00Z
2020-02-28T15:00:00Z
2020-03-27T15:00:00Z
2020-04-24T15:00:00Z
2020-05-29T15:00:00Z
2020-06-26T15:00:00Z
2020-07-31T15:00:00Z
2020-08-28T15:00:00Z
2020-09-25T15:00:00Z
2020-10-30T15:00:00Z
2020-11-27T15:00:00Z
2020-12-25T15:00:00Z
2021-01-29T15:00:00Z
2021-02-26T15:00:00Z
2021-03-26T15:00:00Z
2021-04-30T15:00:00Z
2021-05-28T15:00:00Z
2021-06-25T15:00:00Z
2021-07-30T15:00:00Z
2021-08-27T15:00:00Z
2021-09-24T15:00:00Z
2021-10-29T15:00:00Z
2021-11-26T15:00:00Z
2021-12-31T15:00:00Z
2022-01-28T15:00:00Z
2022-02-25T15:00:00Z
2022-03-25T15:00:00Z
2022-04-29T15:00:00Z
2022-05-27T15:00:00Z
2022-06-24T15:00:00Z
2022-07-29T15:00:00Z
2022-08-26T15:00:00Z
2022-09-30T15:00:00Z
2022-10-28T15:00:00Z
2022-11-25T15:00:00Z
2022-12-30T15:00:00Z
2023-01-27T15:00:00Z
2023-02-24T15:00:00Z
2023-03-31T15:00:00Z
2023-04-28T15:00:00Z
2023-05-26T15:00:00Z
2023-06-30T15:00:00Z
2023-07-28T15:00:00Z
2023-08-25T15:00:00Z
2023-09-29T15:00:00Z
2023-10-27T15:00:00Z
2023-11-24T15:00:00Z
2023-12-29T15:00:00Z
2024-01-26T15:00:00Z
2024-02-23T15:00:00Z
2024-03-29T15:00:00Z
2024-04-26T15:00:00Z
2024-05-31T15:00:00Z
2024-06-28T15:00:00Z
2024-07-26T15:00:00Z
2024-08-30T15:00:00Z
2024-09-27T15:00:00Z
2024-10-25T15:00:00Z
2024-11-29T15:00:00Z
2024-12-27T15:00:00Z
2025-01-31T15:00:00Z
2025-02-28T15:00:00Z
2025-03-28T15:00:00Z
2025-04-25T15:00:00Z
2025-05-30T15:00:00Z

あわせて読みたい

言語 リンク
Bash 毎月最終金曜(プレミアムフライデー)だったら実行するシェルスクリプト - Qiita
PHP PHPを使って今日または次のプレミアムフレイデーを4行で取得する - Qiita
PHP PHPでプレミアムフライデー(月末の金曜日)を求める - Qiita
Oracle DB NEXT_DAY関数、TRUNC関数を使って、向こう1000日分のプレミアムフライデーを求めてみる。(Oracle Database) - Qiita
Java プレミアムフライデーを求めるメソッドを作ろうと思ったらJava8の標準APIに既にあった - Qiita
Java プレミアムフライデーを求めるメソッドを作った(Java8版) - Qiita
Java プレミアムフライデーを求めるメソッドを作った - Qiita
Java プレミアムフライデーを求めるメソッドをワンライナーで作った - Qiita
PowerShell プレミアムフライデーを求める処理を作った - Qiita
Kotlin プレミアムフライデーを求める記述をKotlinで書いてみた - Qiita
Python Pythonで2017年のプレミアムフライデー一覧を出力する - Qiita
Ruby プレミアムフライデーに備えよう!Railsで次の月末の金曜日を取得する! - Qiita
JavaScript JavaScriptでプレミアムフライデー(月末最終金曜日)の日付を取得してみた - Qiita
DB2 DB2DBA: DB2の日付操作でプレミアムフライデー判定 - Qiita

おわり

おわりです:whale2:

参考と注釈

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?