0

我使用daterangepickermoment來選擇不同的範圍。我需要動態設置startDateendDate時刻建設回落到js日期

html.erb文件:

<%if params[:campaign_report].present? && params[:campaign_report]["daterange"].present?%> 
    <%date_range= params[:campaign_report]["daterange"].split("-")%> 
    <%= @start_date= Date.parse(date_range[0]).strftime("%Y/%m/%d")%> 
    <%= @end_date= Date.parse(date_range[1]).strftime("%Y/%m/%d")%> 
<%else%> 
    <%= @start_date= Date.parse(@daterange).strftime("%Y/%m/%d")%> 
    <%= @end_date= Date.parse(@daterange).strftime("%Y/%m/%d")%> 
<%end%> 

<script type="text/javascript"> 

$(function() { 
    function report_form_submit(start, end) { 
    $('#daterange').val(start.format('MMM D, YYYY') + ' - ' + end.format('MMM D, YYYY')); 
    $("#campaign_report_daterange").val($("#daterange").val()) 
    $("#daily_filter_form").submit(); 
    } 

    $('#daterange').daterangepicker({ 
    ranges: { 
     'Today': [moment(), moment()], 
     'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 
     'Last 7 Days': [moment().subtract(6, 'days'), moment()], 
     'Last 30 Days': [moment().subtract(29, 'days'), moment()], 
     'This Month': [moment().startOf('month'), moment().endOf('month')], 
     'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] 
    }, 
    startDate: moment('<%= @start_date%>'), 
    endDate: moment('<%= @end_date%>') 
    }, report_form_submit); 
}); 
..... 

我收到警告在瀏覽器控制檯,如:

棄用警告:時刻施工回落到JS日期。這是不鼓勵,將在即將到來的主要版本中被刪除。有關更多信息,請參閱https://github.com/moment/moment/issues/1407

+0

這是一個警告,而不是錯誤,但你應該做些什麼 - 你展示** **整個消息或僅僅是第一部分? –

+0

,因爲**整個**警告包含一個鏈接,「https:// github.com/moment/moment/issues/1407」......它完全告訴你**如何修復它 –

+0

請按照鏈接和修復你的代碼^^^在你揭示所有問題之前,看看我是如何知道整個信息的?這使我成爲一個巫師 - 我是否應該爲這種惡魔般的力量而被燒死? –

回答

0

請按照警告中的鏈接中給出的說明使用時刻分析指定格式。

由於文檔說:

警告:對於解析字符串is inconsistent瀏覽器支持。由於沒有關於哪種格式應該被支持的規範,所以某些瀏覽器中的工作方式在其他瀏覽器中不起作用。

爲了解析除ISO 8601字符串以外的任何其他結果,應使用String + Format

你的情況,你必須使用:

startDate: moment('<%= @start_date%>', 'YYYY/MM/DD'), 
endDate: moment('<%= @end_date%>', 'YYYY/MM/DD')