1

rubymotion で現在の暦月の終わりを Time オブジェクトとして取得する必要があります。

したがって、2012 年 10 月の現在の時刻を考えると、現在のTime日付に関係なく、 のインスタンスとして 2012 年 10 月 31 日 真夜中 が必要になります。

どうすればいいですか?

編集

回答に感謝しますが、言い忘れたことの 1 つは、申し訳ありませんが、RubyMotion を使用していて、Date および DateTime オブジェクトが利用できないことです。

基本的に、あなたrequireがルビーでロードしたものには、私はアクセスできません。

4

4 に答える 4

2

RubyMotionを使用しているため、すべてのiOSSDKにアクセスできます。

NSDate *curDate = [NSDate date];
    NSCalendar* calendar = [NSCalendar currentCalendar];
    NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; // Get necessary date components

    comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; // Get necessary date components
    // set last of month
    [comps setMonth:[comps month]+1];
    [comps setDay:0];
    NSDate *tDateMonth = [calendar dateFromComponents:comps];
    NSLog(@"%@", tDateMonth);

月の最後の日を取得するで見つかりました

RubyMotionへの翻訳:

    curDate = NSDate.date
    calendar = NSCalendar.currentCalendar

    # Get necessary date components
    comps = calendar.components(NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit, fromDate:curDate)

    # set last of month
    comps.month += 1
    comps.day = 0
    tDateMonth = calendar.dateFromComponents(comps)
    NSLog("%@", tDateMonth)
于 2012-10-10T22:36:32.603 に答える
1

これでうまくいくと思います。

require 'date'
(DateTime.now.next_month - DateTime.now.day).to_time

例:

ruby-1.9.3-p194 :001 > require 'date'
 => true 

ruby-1.9.3-p194 :02 > DateTime.now
 => #<DateTime: 2012-10-10T17:18:15-05:00 ((2456211j,80295s,284081000n),-18000s,2299161j)> 

ruby-1.9.3-p194 :03 > DateTime.now.next_month - DateTime.now.day
 => #<DateTime: 2012-10-31T17:18:16-05:00 ((2456232j,80296s,819683000n),-18000s,2299161j)> 

ruby-1.9.3-p194 :04 > (DateTime.now.next_month - DateTime.now.day).to_time
 => 2012-10-31 17:18:18 -0500 
于 2012-10-10T22:16:09.673 に答える
0

Ruby on Railsメソッド

Time.now.at_end_of_month
于 2012-10-10T22:09:17.710 に答える
0

次の月にロールバックするまで、「開始」日時をインクリメントできます。

require 'date'

def last_day_of_month(date=DateTime.now)
  month = date.month
  date += 1 while month == (date + 1).month
  date.to_time
end

last_day_of_month # => 2012-10-31 16:17:21 -0600
nov_1_2010 = DateTime.parse('2010-11-01T01:01:01-0700')
last_day_of_month(nov_1_2010) # => 2010-11-30 01:01:01 -0700 
于 2012-10-10T22:18:30.813 に答える