Poate cineva sa sugereze o modalitate de a compara valorile de două întâlniri mai mare, mai mică, și nu în trecut folosind JavaScript? Valorile vor veni din casetele de text.
La Data obiect va face ceea ce vrei - și construi de fiecare data, apoi comparați-le cu ajutorul " >", <
, <= " sau " >=
.
La==
, !=
, ===
, și !==
operatorii necesită utilizarea data.getTime()
ca și în
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
pentru a fi clar doar de verificare pentru egalitatea direct cu obiecte de data câștigat't de lucru
var d1 = new Date();
var d2 = new Date(d1);
console.log(d1 == d2); // prints false (wrong!)
console.log(d1 === d2); // prints false (wrong!)
console.log(d1 != d2); // prints true (wrong!)
console.log(d1 !== d2); // prints true (wrong!)
console.log(d1.getTime() === d2.getTime()); // prints true (correct)
Îți sugerez să utilizați drop-coborâșuri sau unele similare constrâns formularul de data de intrare, mai degrabă decât de casete de text, totuși, ca nu cumva să te afli într-intrare de validare iad.
Cel mai simplu mod de a compara datele în javascript este de a converti de la un obiect date și apoi compara aceste date-obiecte.
Mai jos veți găsi un obiect cu trei funcții:
Returnează un număr:
-1 dacă o < b
0 dacă a = b
1 dacă a > b
NaN dacă a sau b este un ilegală data
date.inRange (d,start,end)
Returnează valoarea booleană sau NaN:
adevărat dacă d este între start și end (inclusiv)
fals dacă d este înainte start sau după end.
NaN dacă una sau mai multe dintre datele sunt ilegale.
date.converti
Utilizate de alte funcții pentru a converti lor de intrare de la un obiect date. Intrare poate fi
.
// Source: http://stackoverflow.com/questions/497790
var dates = {
convert:function(d) {
// Converts the date in d to a date-object. The input can be:
// a date object: returned without modification
// an array : Interpreted as [year,month,day]. NOTE: month is 0-11.
// a number : Interpreted as number of milliseconds
// since 1 Jan 1970 (a timestamp)
// a string : Any format supported by the javascript engine, like
// "YYYY/MM/DD", "MM/DD/YYYY", "Jan 31 2009" etc.
// an object : Interpreted as an object with year, month and date
// attributes. **NOTE** month is 0-11.
return (
d.constructor === Date ? d :
d.constructor === Array ? new Date(d[0],d[1],d[2]) :
d.constructor === Number ? new Date(d) :
d.constructor === String ? new Date(d) :
typeof d === "object" ? new Date(d.year,d.month,d.date) :
NaN
);
},
compare:function(a,b) {
// Compare two dates (could be of any type supported by the convert
// function above) and returns:
// -1 : if a < b
// 0 : if a = b
// 1 : if a > b
// NaN : if a or b is an illegal date
// NOTE: The code inside isFinite does an assignment (=).
return (
isFinite(a=this.convert(a).valueOf()) &&
isFinite(b=this.convert(b).valueOf()) ?
(a>b)-(a<b) :
NaN
);
},
inRange:function(d,start,end) {
// Checks if date in d is between dates in start and end.
// Returns a boolean or NaN:
// true : if d is between start and end (inclusive)
// false : if d is before start or after end
// NaN : if one or more of the dates is illegal.
// NOTE: The code inside isFinite does an assignment (=).
return (
isFinite(d=this.convert(d).valueOf()) &&
isFinite(start=this.convert(start).valueOf()) &&
isFinite(end=this.convert(end).valueOf()) ?
start <= d && d <= end :
NaN
);
}
}
Compara < " și "> doar ca de obicei, dar nimic care implică
=` ar trebui să folosească un " + " de prefix. Astfel:
var x = new Date('2013-05-23');
var y = new Date('2013-05-23');
// less than, greater than is fine:
x < y; => false
x > y; => false
x === y; => false, oops!
// anything involving '=' should use the '+' prefix
// it will then compare the dates' millisecond values
+x <= +y; => true
+x >= +y; => true
+x === +y; => true
Sper că acest lucru vă ajută!
Relaționale operatorii de <
<=
"> " >=
poate fi folosit pentru a compara JavaScript date:
var d1 = new Date(2013, 0, 1);
var d2 = new Date(2013, 0, 2);
d1 < d2; // true
d1 <= d2; // true
d1 > d2; // false
d1 >= d2; // false
Cu toate acestea, operatorii de egalitate==
!=
===
!==
nu poate fi folosit pentru a compara (valoarea) datele pentru că:
- Două obiecte distincte nu sunt egale pentru ambele stricte sau abstract comparații.
- O expresie compararea Obiectelor este adevărat numai dacă operanzii referință la același Obiect.
Puteți compara valoarea de date pentru egalitatea folosind oricare dintre aceste metode:
var d1 = new Date(2013, 0, 1);
var d2 = new Date(2013, 0, 1);
/*
* note: d1 == d2 returns false as described above
*/
d1.getTime() == d2.getTime(); // true
d1.valueOf() == d2.valueOf(); // true
Number(d1) == Number(d2); // true
+d1 == +d2; // true
Ambele Data.getTime()
și Data.valueOf()
returnează numărul de milisecunde de la 1 ianuarie 1970, ora 00:00 UTC. Ambele "Număr" funcția și unar +
operator call la valueOf()
metode spatele scenei.
De departe, cea mai simplă metodă este de a scade o data de la celălalt și de a compara rezultatul.
var oDateOne = new Date();
var oDateTwo = new Date();
alert(oDateOne - oDateTwo === 0);
alert(oDateOne - oDateTwo < 0);
alert(oDateOne - oDateTwo > 0);
Compararea data în JavaScript este destul de usor... JavaScript a built-in sistem de comparare pentru data care face atât de ușor pentru a face comparația...
Doar urmați acești pași pentru a compara 2 datele de valoare, de exemplu ai 2 intrari care fiecare are o valoare de Dată în "String" și să le compare...
1. ai 2 valori șir veți obține de la intrare și te'd place să le compare, ele sunt la fel de mai jos:
var date1 = '01/12/2018';
var date2 = '12/12/2018';
2. Ei au nevoie să fie Data Obiect să fie comparate valorile de dată, astfel încât pur și simplu de a le converti la data de, folosind noua Data()
, eu doar re-le alocați pentru simplitatea de explicație, dar o poti face oricum doresti:
date1 = new Date(date1);
date2 = new Date(date2);
3. Acum, pur și simplu, să le compare, folosind "> " <
>=
<=
date1 > date2; //false
date1 < date2; //true
date1 >= date2; //false
date1 <= date2; //true
Compara zi numai (ignorând componentă de timp):
Date.prototype.sameDay = function(d) {
return this.getFullYear() === d.getFullYear()
&& this.getDate() === d.getDate()
&& this.getMonth() === d.getMonth();
}
Utilizare:
if(date1.sameDay(date2)) {
// highlight day on calendar or something else clever
}
ce format?
Dacă vă construi un Javascript Data obiect, puteți doar le scade pentru a obține un milisecunde diferența (edit: sau doar le compara) :
js>t1 = new Date()
Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time)
js>t2 = new Date()
Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time)
js>t2-t1
2672
js>t3 = new Date('2009 Jan 1')
Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time)
js>t1-t3
2470768442
js>t1>t3
true
RĂSPUNS SCURT
Aici este o funcție care returnează {boolean} dacă din dateTime > pentru a dateTime [Demo în acțiune][1]
var from = '08/19/2013 00:00'
var to = '08/12/2013 00:00 '
function isFromBiggerThanTo(dtmfrom, dtmto){
return new Date(dtmfrom).getTime() >= new Date(dtmto).getTime() ;
}
console.log(isFromBiggerThanTo(from, to)); //true
Explicație
[jsFiddle ][2]
var date_one = '2013-07-29 01:50:00',
date_two = '2013-07-29 02:50:00';
//getTime() returns the number of milliseconds since 01.01.1970.
var timeStamp_date_one = new Date(date_one).getTime() ; //1375077000000
console.log(typeof timeStamp_date_one);//number
var timeStamp_date_two = new Date(date_two).getTime() ;//1375080600000
console.log(typeof timeStamp_date_two);//number
din moment ce sunt acum, având ambele datetime în număr tipul le puteți compara cu orice operații de Comparație
( >, < ,= ,!= ,== ,!== ,>= ȘI <=)
Apoi
dacă sunteți familiarizat cu C#
Personalizat Data și Ora Format String această bibliotecă ar trebui să facă același lucru și să vă ajute format data și ora dtmFRM dacă sunteți în trecere în data de coarde sau format unix
Utilizare
var myDateTime = new dtmFRM();
alert(myDateTime.ToString(1375077000000, "MM/dd/yyyy hh:mm:ss ampm"));
//07/29/2013 01:50:00 AM
alert(myDateTime.ToString(1375077000000,"the year is yyyy and the day is dddd"));
//this year is 2013 and the day is Monday
alert(myDateTime.ToString('1/21/2014', "this month is MMMM and the day is dd"));
//this month is january and the day is 21
[DEMO][4]
tot ce trebuie să faceți este de a trece la oricare dintre aceste format pacificat în biblioteca js
fișier
utilizați acest cod,
var firstValue = "2012-05-12".split('-');
var secondValue = "2014-07-12".split('-');
var firstDate=new Date();
firstDate.setFullYear(firstValue[0],(firstValue[1] - 1 ),firstValue[2]);
var secondDate=new Date();
secondDate.setFullYear(secondValue[0],(secondValue[1] - 1 ),secondValue[2]);
if (firstDate > secondDate)
{
alert("First Date is greater than Second Date");
}
else
{
alert("Second Date is greater than First Date");
}
Și, de asemenea, a verifica acest link http://www.w3schools.com/js/js_obj_date.asp
Nota - Compara Singura Data Parte:
Când ne-am compara doua întâlnire în javascript. Este nevoie de ore, minute și secunde, de asemenea, în considerare.. Deci, Dacă avem nevoie doar pentru a compara data numai, aceasta este abordarea:
var date1= new Date("01/01/2014").setHours(0,0,0,0);
var date2= new Date("01/01/2014").setHours(0,0,0,0);
Acum: dacă date1.valueOf()> data2.valueOf()
va funcționa ca un farmec.
var date = new Date(); // will give you todays date.
// following calls, will let you set new dates.
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
var yesterday = new Date();
yesterday.setDate(...date info here);
if(date>yesterday) // will compare dates
Doar pentru a adăuga încă o altă posibilitate de multe opțiuni existente, ai putea încerca:
if (date1.valueOf()==date2.valueOf()) .....
...care pare să funcționeze pentru mine. Desigur, trebuie să se asigure că datele nu sunt nedefinite...
if ((date1?date1.valueOf():0)==(date2?date2.valueOf():0) .....
În acest fel ne putem asigura că un rezultat pozitiv comparație este de făcut dacă ambele sunt nedefinite, de asemenea, sau...
if ((date1?date1.valueOf():0)==(date2?date2.valueOf():-1) .....
dacă preferați să nu-i fie egal.
Prin Moment.js
Jsfiddle:
function compare(dateTimeA, dateTimeB) {
var momentA = moment(dateTimeA,"DD/MM/YYYY");
var momentB = moment(dateTimeB,"DD/MM/YYYY");
if (momentA > momentB) return 1;
else if (momentA < momentB) return -1;
else return 0;
}
alert(compare("11/07/2015", "10/07/2015"));
Metoda returnează 1 dacă dateTimeA
este mai mare decât dateTimeB
Metoda returnează 0 dacă dateTimeA de "egal" dateTimeB
Metoda returnează -1 dacă dateTimeA
este mai mic decât dateTimeB
FERIȚI-VĂ DE FUS ORAR
Un javascript data a no noțiunea de timezone. L's un moment în timp (căpușe din epoca), cu funcții la îndemână pentru translatarea la și de la siruri de caractere în "locale" de fus orar. Dacă doriți să lucrați cu datele folosind obiecte data, ca toată lumea de aici este de a face, vrei datele dvs. pentru a reprezenta UTC miezul nopții la start de la data în cauză. Aceasta este o comună și necesară convenție care vă permite să lucrați cu datele, indiferent de sezon sau de fus orar de la crearea lor. Deci, ai nevoie să fie foarte vigilenți pentru a gestiona noțiunea de fus orar, în special atunci când vă creați miezul nopții UTC obiect date.
Most de la timp, veți dori dată pentru a reflecta fusul orar al utilizatorului. Faceți clic pe dacă astăzi este ziua ta. Utilizatorii în NZ și NE-apăsați în același timp și primi date diferite. În acest caz, face acest lucru...
// create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));
Uneori, comparabilitatea internațională atuuri locale precizie. În acest caz, face acest lucru...
// the date in London of a moment in time. Device timezone is ignored.
new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));
Acum puteți compara direct data obiecte ca alte răspunsuri sugerează.
Având grijă de a gestiona zona de fus orar atunci când creați, de asemenea, trebuie să fie sigur că pentru a menține zona de fus orar atunci când ai converti înapoi la un șir de reprezentare. Astfel încât să puteți utiliza în condiții de siguranță...
toISOString()
getUTCxxx()
getTime() //returnează un număr cu nici un moment sau de fus orar.
.toLocaleDateString("fr",{fus orar:"UTC"}) // indiferent de localizare vrei, dar ÎNTOTDEAUNA UTC.
Și complet pentru a evita orice altceva, mai ales...
getYear()
,getMonth()
,getDate()
Pentru a compara două data putem folosi date.js bibliotecă JavaScript care poate fi găsit la: https://code.google.com/archive/p/datejs/downloads][1]
și de a folosi `Data.compara( Data data 1, Data data2 ) metoda lui și-l întoarce un numărul care spun următorul rezultat:
-1 = date1 este mai mică de data2.
0 = valori sunt egale.
1 = date1 este mai mare data2.
În scopul de a crea datele de text liber în Javascript aveți nevoie pentru a analiza în Data de() a obiectelor.
Ai putea folosi Data.parse() care are text liber încearcă să-l transforme într-o nouă dată, dar dacă ai control asupra paginii mi-ar recomanda folosind HTML selectați cutii loc sau un selector de dată, precum YUI calendar de control sau UI jQuery Datepicker.
Odată ce aveți o data ca alte persoane au subliniat puteți utiliza aritmetică simplă pentru a scădea datele și de a converti înapoi într-un număr de zile prin împărțirea numărului (în secunde), prin numărul de secunde într-o zi (606024 = 86400).