Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here -</p> <pre><code>// Utility function to append a 0 to single-digit numbers Date.LZ = function(x) {return(x&lt;0||x&gt;9?"":"0")+x}; // Full month names. Change this for local month names Date.monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December'); // Month abbreviations. Change this for local month names Date.monthAbbreviations = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); // Full day names. Change this for local month names Date.dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); // Day abbreviations. Change this for local month names Date.dayAbbreviations = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); // Used for parsing ambiguous dates like 1/2/2000 - default to preferring 'American' format meaning Jan 2. // Set to false to prefer 'European' format meaning Feb 1 Date.preferAmericanFormat = true; // If the getFullYear() method is not defined, create it if (!Date.prototype.getFullYear) { Date.prototype.getFullYear = function() { var yy=this.getYear(); return (yy&lt;1900?yy+1900:yy); } ; } // Parse a string and convert it to a Date object. // If no format is passed, try a list of common formats. // If string cannot be parsed, return null. // Avoids regular expressions to be more portable. Date.parseString = function(val, format) { // If no format is specified, try a few common formats if (typeof(format)=="undefined" || format==null || format=="") { var generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d','MMM-d','d-MMM'); var monthFirst=new Array('M/d/y','M-d-y','M.d.y','M/d','M-d'); var dateFirst =new Array('d/M/y','d-M-y','d.M.y','d/M','d-M'); var checkList=new Array(generalFormats,Date.preferAmericanFormat?monthFirst:dateFirst,Date.preferAmericanFormat?dateFirst:monthFirst); for (var i=0; i&lt;checkList.length; i++) { var l=checkList[i]; for (var j=0; j&lt;l.length; j++) { var d=Date.parseString(val,l[j]); if (d!=null) { return d; } } } return null; }; this.isInteger = function(val) { for (var i=0; i &lt; val.length; i++) { if ("1234567890".indexOf(val.charAt(i))==-1) { return false; } } return true; }; this.getInt = function(str,i,minlength,maxlength) { for (var x=maxlength; x&gt;=minlength; x--) { var token=str.substring(i,i+x); if (token.length &lt; minlength) { return null; } if (this.isInteger(token)) { return token; } } return null; }; val=val+""; format=format+""; var i_val=0; var i_format=0; var c=""; var token=""; var token2=""; var x,y; var year=new Date().getFullYear(); var month=1; var date=1; var hh=0; var mm=0; var ss=0; var ampm=""; while (i_format &lt; format.length) { // Get next token from format string c=format.charAt(i_format); token=""; while ((format.charAt(i_format)==c) &amp;&amp; (i_format &lt; format.length)) { token += format.charAt(i_format++); } // Extract contents of value based on format token if (token=="yyyy" || token=="yy" || token=="y") { if (token=="yyyy") { x=4;y=4; } if (token=="yy") { x=2;y=2; } if (token=="y") { x=2;y=4; } year=this.getInt(val,i_val,x,y); if (year==null) { return null; } i_val += year.length; if (year.length==2) { if (year &gt; 70) { year=1900+(year-0); } else { year=2000+(year-0); } } } else if (token=="MMM" || token=="NNN"){ month=0; var names = (token=="MMM"?(Date.monthNames.concat(Date.monthAbbreviations)):Date.monthAbbreviations); for (var i=0; i&lt;names.length; i++) { var month_name=names[i]; if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) { month=(i%12)+1; i_val += month_name.length; break; } } if ((month &lt; 1)||(month&gt;12)){ return null; } } else if (token=="EE"||token=="E"){ var names = (token=="EE"?Date.dayNames:Date.dayAbbreviations); for (var i=0; i&lt;names.length; i++) { var day_name=names[i]; if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) { i_val += day_name.length; break; } } } else if (token=="MM"||token=="M") { month=this.getInt(val,i_val,token.length,2); if(month==null||(month&lt;1)||(month&gt;12)){ return null; } i_val+=month.length; } else if (token=="dd"||token=="d") { date=this.getInt(val,i_val,token.length,2); if(date==null||(date&lt;1)||(date&gt;31)){ return null; } i_val+=date.length; } else if (token=="hh"||token=="h") { hh=this.getInt(val,i_val,token.length,2); if(hh==null||(hh&lt;1)||(hh&gt;12)){ return null; } i_val+=hh.length; } else if (token=="HH"||token=="H") { hh=this.getInt(val,i_val,token.length,2); if(hh==null||(hh&lt;0)||(hh&gt;23)){ return null; } i_val+=hh.length; } else if (token=="KK"||token=="K") { hh=this.getInt(val,i_val,token.length,2); if(hh==null||(hh&lt;0)||(hh&gt;11)){ return null; } i_val+=hh.length; hh++; } else if (token=="kk"||token=="k") { hh=this.getInt(val,i_val,token.length,2); if(hh==null||(hh&lt;1)||(hh&gt;24)){ return null; } i_val+=hh.length; hh--; } else if (token=="mm"||token=="m") { mm=this.getInt(val,i_val,token.length,2); if(mm==null||(mm&lt;0)||(mm&gt;59)){ return null; } i_val+=mm.length; } else if (token=="ss"||token=="s") { ss=this.getInt(val,i_val,token.length,2); if(ss==null||(ss&lt;0)||(ss&gt;59)){ return null; } i_val+=ss.length; } else if (token=="a") { if (val.substring(i_val,i_val+2).toLowerCase()=="am") { ampm="AM"; } else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") { ampm="PM"; } else { return null; } i_val+=2; } else { if (val.substring(i_val,i_val+token.length)!=token) { return null; } else { i_val+=token.length; } } } // If there are any trailing characters left in the value, it doesn't match if (i_val != val.length) { return null; } // Is date valid for month? if (month==2) { // Check for leap year if ( ( (year%4==0)&amp;&amp;(year%100 != 0) ) || (year%400==0) ) { // leap year if (date &gt; 29){ return null; } } else { if (date &gt; 28) { return null; } } } if ((month==4)||(month==6)||(month==9)||(month==11)) { if (date &gt; 30) { return null; } } // Correct hours value if (hh&lt;12 &amp;&amp; ampm=="PM") { hh=hh-0+12; } else if (hh&gt;11 &amp;&amp; ampm=="AM") { hh-=12; } return new Date(year,month-1,date,hh,mm,ss); }; // Check if a date string is valid Date.isValid = function(val,format) { return (Date.parseString(val,format) != null); }; // Check if a date object is before another date object Date.prototype.isBefore = function(date2) { if (date2==null) { return false; } return (this.getTime()&lt;date2.getTime()); }; // Check if a date object is after another date object Date.prototype.isAfter = function(date2) { if (date2==null) { return false; } return (this.getTime()&gt;date2.getTime()); }; // Check if two date objects have equal dates and times Date.prototype.equals = function(date2) { if (date2==null) { return false; } return (this.getTime()==date2.getTime()); }; // Check if two date objects have equal dates, disregarding times Date.prototype.equalsIgnoreTime = function(date2) { if (date2==null) { return false; } var d1 = new Date(this.getTime()).clearTime(); var d2 = new Date(date2.getTime()).clearTime(); return (d1.getTime()==d2.getTime()); }; // Format a date into a string using a given format string Date.prototype.format = function(format) { format=format+""; var result=""; var i_format=0; var c=""; var token=""; var y=this.getYear()+""; var M=this.getMonth()+1; var d=this.getDate(); var E=this.getDay(); var H=this.getHours(); var m=this.getMinutes(); var s=this.getSeconds(); var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k; // Convert real date parts into formatted versions var value=new Object(); if (y.length &lt; 4) { y=""+(+y+1900); } value["y"]=""+y; value["yyyy"]=y; value["yy"]=y.substring(2,4); value["M"]=M; value["MM"]=Date.LZ(M); value["MMM"]=Date.monthNames[M-1]; value["NNN"]=Date.monthAbbreviations[M-1]; value["d"]=d; value["dd"]=Date.LZ(d); value["E"]=Date.dayAbbreviations[E]; value["EE"]=Date.dayNames[E]; value["H"]=H; value["HH"]=Date.LZ(H); if (H==0){ value["h"]=12; } else if (H&gt;12){ value["h"]=H-12; } else { value["h"]=H; } value["hh"]=Date.LZ(value["h"]); value["K"]=value["h"]-1; value["k"]=value["H"]+1; value["KK"]=Date.LZ(value["K"]); value["kk"]=Date.LZ(value["k"]); if (H &gt; 11) { value["a"]="PM"; } else { value["a"]="AM"; } value["m"]=m; value["mm"]=Date.LZ(m); value["s"]=s; value["ss"]=Date.LZ(s); while (i_format &lt; format.length) { c=format.charAt(i_format); token=""; while ((format.charAt(i_format)==c) &amp;&amp; (i_format &lt; format.length)) { token += format.charAt(i_format++); } if (typeof(value[token])!="undefined") { result=result + value[token]; } else { result=result + token; } } return result; }; // Get the full name of the day for a date Date.prototype.getDayName = function() { return Date.dayNames[this.getDay()]; }; // Get the abbreviation of the day for a date Date.prototype.getDayAbbreviation = function() { return Date.dayAbbreviations[this.getDay()]; }; // Get the full name of the month for a date Date.prototype.getMonthName = function() { return Date.monthNames[this.getMonth()]; }; // Get the abbreviation of the month for a date Date.prototype.getMonthAbbreviation = function() { return Date.monthAbbreviations[this.getMonth()]; }; // Clear all time information in a date object Date.prototype.clearTime = function() { this.setHours(0); this.setMinutes(0); this.setSeconds(0); this.setMilliseconds(0); return this; }; // Add an amount of time to a date. Negative numbers can be passed to subtract time. Date.prototype.add = function(interval, number) { if (typeof(interval)=="undefined" || interval==null || typeof(number)=="undefined" || number==null) { return this; } number = +number; if (interval=='y') { // year this.setFullYear(this.getFullYear()+number); } else if (interval=='M') { // Month this.setMonth(this.getMonth()+number); } else if (interval=='d') { // Day this.setDate(this.getDate()+number); } else if (interval=='w') { // Weekday var step = (number&gt;0)?1:-1; while (number!=0) { this.add('d',step); while(this.getDay()==0 || this.getDay()==6) { this.add('d',step); } number -= step; } } else if (interval=='h') { // Hour this.setHours(this.getHours() + number); } else if (interval=='m') { // Minute this.setMinutes(this.getMinutes() + number); } else if (interval=='s') { // Second this.setSeconds(this.getSeconds() + number); } return this; }; </code></pre> <p>Copy this to a .js file, and include it in your page.</p> <p>Then you can use the format() method on the Date object.</p> <p>You can also find another library <a href="http://blog.stevenlevithan.com/archives/date-time-format" rel="nofollow noreferrer">here</a>.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload