簡體   English   中英

排序日期字符串javascript

[英]Sort date strings javascript

我有需要比較的日期時間和日期作為字符串存儲在javscript中。

將它們保留為字符串似乎可行:

const date1 = '2016-01-26 05:20:44'
const date2 = '2016-01-26 06:20:44'
const date3 = '2016-02-26'

date1 > date2 //false
date1 < date2 //true
date3 > date2 //true
date3 > date1 //true
date1 > date3 //false

問題:我可以依靠嗎? 還是這是一種“有效但不可靠”的交易?

我應該將日期字符串轉換為日期對象(使用datemoment

如果那是您的格式,它應該繼續工作。 想一想:這種格式的主要優點之一就是它可以排序。

當然,Date對象本身也是可排序的。 用於比較它們的內部valueOf方法返回自固定時間以來的毫秒數。

更新.....

function removeAllNoNumber(a) {
   return  a.toString().replace(/\D/g, '');
}

function padRight(source, padChar, padCount) {
  var dif = padCount - source.toString().length;
  if (dif <= 0) {
     return source;
  } else {
     var c = "";
     for (var i = 0; i < dif; i++) {
         c += padChar.toString();
     }
         return (source + c);
     }
}

function timeToInt(a){
     return parseInt(padRight(removeAllNoNumber(a),"0",14),10);
}


  var date1 = timeToInt("2016-01-26 05:20:44"); //20160126052044 
  var date2 = timeToInt("2016-01-26 06:20:44"); //20160126062044
  var date3 = timeToInt("2016-01-26"); //20160126000000

   if (date1 < date2) {

     alert("here");
   }

這樣,如果格式從未更改,則可以使用substring()從問題中給定的字符串中提取日期。

date1.substring(0,10)
date2.substring(0,10)
date3.substring(0,10)

輸出到子字符串

"2016-01-26"

"2016-01-26"

"2016-02-26"

現在,您可以通過比較日期來比較提取的日期子字符串,例如

date1.substring(0,10) > date1.substring(0,10) //false

有點混亂,但是它將使您的主字符串保持不變。

暫無
暫無

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

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