質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

159閲覧

Ruby Date 最後のX日を取得

tqkqt0

総合スコア155

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/07/27 01:43

編集2017/07/27 01:44

Cronで毎日動くRubyスクリプトがあります。

最後のX日を毎日取得することは可能でしょうか。

例えば
X日を15日に指定した場合
本日が7/27だとしたら7/15を、
本日が7/14だとしたら6/15を、
本日が6/30だとしたら6/15を取得

Date.new(day.year,day.month, 15)だと、
本日が7/27でも7/14でも7/15が取得されてしまいます。

何かいい方法はありますか?

※Railsは導入していません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんな感じでしょうか

ruby

1# coding: utf-8 2 3require 'Date' 4 5def foo(y,m,d,x=15) 6 a = Date.new(y,m,d) 7 if a.day >= x 8 b = Date.new(a.year,a.month,x) 9 puts(b.strftime("%Y/%m/%d")) 10 elsif a.day < x 11 c = Date.new(a.prev_month.year,a.prev_month.month,x) 12 puts(c.strftime("%Y/%m/%d")) 13 end 14end 15 16foo(2017,10,31) #=> 2017/10/15 17foo(2017,10,15) #=> 2017/10/15 18foo(2017,10,13) #=> 2017/09/15 19foo(2017,01,01) #=> 2016/12/15 20

投稿2017/07/27 11:08

編集2017/07/27 11:10
bamboorian

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tqkqt0

2017/07/31 01:55

ご回答ありがとうございます!こちらも参考にさせていただきます!
guest

0

ベストアンサー

Ruby

1# encoding: utf-8 2 3x = 15 4 5t = Time.now 6m = t.month 7d = t.day 8 9puts "#{x < d ? m : m - 1}#{x}日" 10

質問に書いてある動きをする
プログラムを考えてみました。

単純にその日が今日よりも前か後かだけで
分岐させています。

月によって30日だったり31日だったりするので
その部分の調整が必要だと思いますが
私のコードでは行っていません。

投稿2017/07/27 02:03

編集2017/07/27 02:09
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tqkqt0

2017/07/27 02:30

たしかに月末の対策についても考えないといけませんね!的確な回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問