我使用以下datetimepicker,從我的理解是jquery-ui datepicker已被擴展。在rails 3.2中的jQuery datetimepicker格式
http://trentrichardson.com/examples/timepicker/
我的問題是我要顯示給用戶的上午和下午的時間,但我想,這樣,當我把它提交給mysql數據庫以不同的方式格式化,時間格式進入標準的「YY -mm-dd - hh:mm:ss「格式。
這是它目前輸入
我使用以下datetimepicker,從我的理解是jquery-ui datepicker已被擴展。在rails 3.2中的jQuery datetimepicker格式
http://trentrichardson.com/examples/timepicker/
我的問題是我要顯示給用戶的上午和下午的時間,但我想,這樣,當我把它提交給mysql數據庫以不同的方式格式化,時間格式進入標準的「YY -mm-dd - hh:mm:ss「格式。
這是它目前輸入
對於有相同的問題上面,我收到了一些上述插件的開發者提出的建議是格式化的責任應該屬於中間件(ruby,php,python等)。所以在做了一些搜索之後,我找到了下面的gem並添加到我的Gemfile中。
gem 'validates_timeliness'
這個插件依賴於及時的寶石,有許多建在接受多種不同格式的開箱即用的功能。
添加到您的模型,你就大功告成了:
validates_datetime :date_paid_on, :allow_blank => true
你可能會碰到,你可能需要一個定製的解析器的情況。如果是這樣,只需將以下內容添加到validates_timeliness.rb初始值設定項中即可。
config.parser.add_formats(:datetime, 'yyyy-mm-dd hh:nn:ss tz')
jQuery UI的日期選擇器支持傳遞altField
和altFormat
選擇,他們出於這樣的目的的格式。你正在使用的插件也支持擴展(雖然以令人困惑的方式)。我相信這是正確的選擇水平,可以爲您提供所需的服務。 Try it out live here
假設形式與這些元素:
<input type="text" id="datetime" />
<input type="hidden" id="datetime_to_server" name="formatted_date_time" />
然後,您可以設置您的DateTimePicker控件是這樣的:
$('#datetime').datetimepicker(
{ altField : '#datetime_to_server', // selector of the hidden input field you want sent to the server
altFormat : 'yy-m-d',
altFieldTimeOnly : false,
altTimeFormat : 'hh:mm:00' });
我已經證實,出於某種原因,我可以使用正常的用戶界面日期選擇器來處理altfield,但無法使用datetimepicker對其進行格式化。 – ctilley79
您是否點擊了我在我的文章中提供的jsfiddle鏈接?點擊「在此試試」鏈接。不是因爲你想要的嗎?請注意,您指定了服務器端預期的hh:mm:ss,但datetimepicker沒有秒,所以這就是爲什麼我在格式化程序中放置「00」的原因。因爲你想要hh:mm:ss(因此,下午1點將作爲13:00:00發送),格式化程序中不需要安培。讓我知道如果我可以進一步幫助.. – Nick
升級到最新版本的datetimepicker幫助,雖然似乎有一個記錄的錯誤行爲,當你有一個下午時間選擇爲前「2012-10-15 03 :15pm「,altTimeFormat似乎希望將其轉換爲」2012-10-15 03:15:00「,因此它完全犯了轉換回24小時的時間。 https://github.com/trentrichardson/jQuery-Timepicker-Addon/issues/211#issuecomment-9495944 – ctilley79
我喜歡這個想法,聽起來很務實和實用。我們能否看到你迄今爲止所嘗試的? – Ohgodwhy
我想你可以在將數據保存到數據庫之前更改日期格式,即使用rails格式化它 – fuzionpro
@fuzionpro絕對是真的,您也可以使用javascript處理邏輯。我想看到OP的努力,所以我們可以引導他。 CNP腳本不能幫助任何人。 – Ohgodwhy