2016-03-11 138 views
1

所以DateTime.current返回Fri, 11 Mar 2016 19:34:10 +0000Rails - 確定星期幾

我該如何確定一週中的哪一天。例如,如果DateTime.current是星期五(只是一週中的某一天,而不考慮日期)?

DateTime.current == DateTime.parse("Friday")不會工作,因爲DateTime.parse("Friday")返回Fri, 11 Mar 2016 00:00:00 +0000這是不一樣的。

我該如何檢查只有日期還是隻有時間等於特定值?

在此先感謝!

基本上,我想看看是否DateTime.current是不是週末,也不是公衆假期,是辦公室之間的工作時間

回答

6

在Ruby 2.1.1,Date類具有friday?方法

返回true如果日期是星期五

首先,需要date

require 'date' 

然後用當前日期創建一個新的日期實例。這裏有一個例子

current_time = Time.now 
year = current_time.year 
month = current_time.month 
day = current_time.day 

date = Date.new(year, month, day) 
date.friday? 
=> true 

根據您的編碼首選項,您可能幹涸這件事更

date = Date.new(Time.now.year, Time.now.month, Time.now.day) 
=> #<Date: 2016-03-11 ((2457459j,0s,0n),+0s,2299161j)> 
date.friday? 

如果你想解決這個問題沒有一個布爾方法(通常在結束的人一個問號,並返回true或返回false),例如當您比較數據庫列時,可以使用Date#wday方法。請記住,這將返回範圍(0..6)中的數字,其中0表示星期日。這意味着你想通過5來檢查星期五。

if date.wday == 5 
    // Do something 
end 

此外,如果你與業務小時的工作,它可能是最容易使用的business_time寶石

還可以包括holidays寶石與business_time

首先,安裝寶石

gem install business_time 
gem install holidays 

然後要求創業板

require 'business_time' 
require 'holidays' 

瞭解如果今天是工作日

Date.today.workday? 

,是一個節日

您現在可以使用這樣的事情,以確定是否今天是假期

Holidays.on(date, :us).empty? 

,是辦公室之間的工作時間

的辦公時間定義從因人而異。沒有一個答案。然而,隨着創業板business_time,您可以設置配置

BusinessTime::Config.beginning_of_workday = "8:30 am" 
BusinessTime::Config.end_of_workday = "5:30 pm" 

來源

紅寶石

http://ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/Date.html#method-i-wday

http://ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/Date.html#method-i-friday-3F

顆寶石

https://github.com/bokmann/business_time

https://github.com/holidays/holidays

+0

謝謝,但我需要從頭開始寫,我也需要比較兩個datetime對象,所以布爾值在這裏真的不會幫助我! – fardin

+1

你是從頭開始寫什麼的? –

+0

'date = Date.today' – steenslag

1

檢查這 -

require 'date' 
today = DateTime.current.to_date 

if today.Friday? 
    puts "Today is a Friday!" 
end 
+0

我編輯它。謝謝 –

1

您可以使用類似以下內容:

day = DateTime.now.strftime("%A") 

這將返回一週中的一天與全名,大寫字母編輯。你也可以得到這樣的縮寫:

day = DateTime.now.strftime("%a") 

你也可以使用%u或%w來獲取星期幾作爲一個整數。是星期五會5

DateTime.now.strftime("%u") == 5 # True if Friday 

您可以在這裏獲得更多的功能:

APIdock documentation