Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

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:

参考と注釈

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした