簡體   English   中英

比較兩個日期時Moment.js棄用警告

[英]Moment.js deprecation warning when comparing two dates

我沒有看到與我的用例匹配的SO線程。 我正在嘗試比較兩個日期,以查看它們是否匹配。 如果沒有,則顯示錯誤信息。 兩個日期的日期格式均為'MM/DD/YYYY'格式,唯一的例外是有時它們可​​能為'MM/DD/YYYY'而其他時候為'M/D/YYYY'

我能夠使其正常工作,但始終會出現不贊成使用的錯誤。 我嘗試使用moment.ISO_8601參數,但仍繼續獲取不建議使用的錯誤。

if( !moment( start_date, moment.ISO_8601 ).isSame( user_start_date, 
  moment.ISO_8601 ) )
{
    console.log("Both dates must match!");
}
else {
    console.log("Dates match!");
}

不建議使用的錯誤如下:

moment.js:1棄用警告:提供的值不是公認的RFC2822或ISO格式。 此刻的構建工作歸結於js Date(),它在所有瀏覽器和版本之間都不可靠。 不建議使用非RFC2822 / ISO日期格式,並將在即將發布的主要版本中將其刪除。


有沒有解決的辦法?

無論是'MM/DD/YYYY'也不'M/D/YYYY'是由公認的ISO 8601兼容的格式moment.ISO_8601moment(String)文檔,看看有什么是ISO 8601種格式的momentjs認可。 您必須指定'MM/DD/YYYY' (或'M/D/YYYY' )格式,而不是使用moment.ISO_8601

您可以使用moment(String, String[])使用'MM/DD/YYYY''M/D/YYYY' 如果您使用嚴格解析,則這是必需的。 請注意:

從版本2.3.0開始 Moment使用一些簡單的試探法來確定要使用的格式。 為了:

  • 優先使用格式來生成有效日期,而不使用無效日期。
  • 優先使用比不多解析多的字符串的格式,並優先使用比不多解析的格式,即更嚴格的解析。
  • 在數組中優先使用格式,而不要在以后使用。

例如,使用['MM/DD/YYYY', 'MM/DD/YYYY'] ,諸如01/10/2017類的模糊輸入將始終被解釋為一月10日。

這是一個沒有棄用警告的示例:

 var start_date = '11/25/2017'; var user_start_date = '27/12/2017'; if( !moment( start_date, ['MM/DD/YYYY', 'M/D/YYYY'] ).isSame( moment(user_start_date, ['MM/DD/YYYY', 'M/D/YYYY'] )) ) { console.log("Both dates must match!"); } else{ console.log("Dates match!"); } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script> 

我實際上沒有看到這個問題。

http://jsfiddle.net/dbkidd/n9s082bj/

你能在小提琴中重現嗎?

var start_date = moment().format('MMM DD h:mm A');
var user_start_date = moment().format('MMM DD h:mm A');

if( !moment( start_date, moment.ISO_8601 ).isSame( user_start_date, 
  moment.ISO_8601 ) )
 {
   console.log("Both dates must match!");
 }
 else{
   console.log("Dates match!");
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM