Improve output: distinguish between failed assertions (failures) and unexpected exceptions (errors), and print a filtered stack trace for any exception.
This commit is contained in:
commit
4f2e303079
1839 changed files with 235630 additions and 0 deletions
761
webapp/web/src/date.js
Normal file
761
webapp/web/src/date.js
Normal file
|
@ -0,0 +1,761 @@
|
|||
/*
|
||||
Copyright (c) 2004-2006, The Dojo Foundation
|
||||
All Rights Reserved.
|
||||
|
||||
Licensed under the Academic Free License version 2.1 or above OR the
|
||||
modified BSD license. For more information on Dojo licensing, see:
|
||||
|
||||
http://dojotoolkit.org/community/licensing.shtml
|
||||
*/
|
||||
|
||||
dojo.provide("dojo.date");
|
||||
|
||||
|
||||
/* Supplementary Date Functions
|
||||
*******************************/
|
||||
|
||||
dojo.date.setDayOfYear = function (dateObject, dayofyear) {
|
||||
dateObject.setMonth(0);
|
||||
dateObject.setDate(dayofyear);
|
||||
return dateObject;
|
||||
}
|
||||
|
||||
dojo.date.getDayOfYear = function (dateObject) {
|
||||
var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1);
|
||||
return Math.floor((dateObject.getTime() -
|
||||
firstDayOfYear.getTime()) / 86400000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.setWeekOfYear = function (dateObject, week, firstDay) {
|
||||
if (arguments.length == 1) { firstDay = 0; } // Sunday
|
||||
dojo.unimplemented("dojo.date.setWeekOfYear");
|
||||
}
|
||||
|
||||
dojo.date.getWeekOfYear = function (dateObject, firstDay) {
|
||||
if (arguments.length == 1) { firstDay = 0; } // Sunday
|
||||
|
||||
// work out the first day of the year corresponding to the week
|
||||
var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1);
|
||||
var day = firstDayOfYear.getDay();
|
||||
firstDayOfYear.setDate(firstDayOfYear.getDate() -
|
||||
day + firstDay - (day > firstDay ? 7 : 0));
|
||||
|
||||
return Math.floor((dateObject.getTime() -
|
||||
firstDayOfYear.getTime()) / 604800000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.setIsoWeekOfYear = function (dateObject, week, firstDay) {
|
||||
if (arguments.length == 1) { firstDay = 1; } // Monday
|
||||
dojo.unimplemented("dojo.date.setIsoWeekOfYear");
|
||||
}
|
||||
|
||||
dojo.date.getIsoWeekOfYear = function (dateObject, firstDay) {
|
||||
if (arguments.length == 1) { firstDay = 1; } // Monday
|
||||
dojo.unimplemented("dojo.date.getIsoWeekOfYear");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* ISO 8601 Functions
|
||||
*********************/
|
||||
|
||||
dojo.date.setIso8601 = function (dateObject, string){
|
||||
var comps = (string.indexOf("T") == -1) ? string.split(" ") : string.split("T");
|
||||
dojo.date.setIso8601Date(dateObject, comps[0]);
|
||||
if (comps.length == 2) { dojo.date.setIso8601Time(dateObject, comps[1]); }
|
||||
return dateObject;
|
||||
}
|
||||
|
||||
dojo.date.fromIso8601 = function (string) {
|
||||
return dojo.date.setIso8601(new Date(0, 0), string);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.setIso8601Date = function (dateObject, string) {
|
||||
var regexp = "^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|" +
|
||||
"(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$";
|
||||
var d = string.match(new RegExp(regexp));
|
||||
if(!d) {
|
||||
dojo.debug("invalid date string: " + string);
|
||||
return false;
|
||||
}
|
||||
var year = d[1];
|
||||
var month = d[4];
|
||||
var date = d[6];
|
||||
var dayofyear = d[8];
|
||||
var week = d[10];
|
||||
var dayofweek = (d[12]) ? d[12] : 1;
|
||||
|
||||
dateObject.setYear(year);
|
||||
|
||||
if (dayofyear) { dojo.date.setDayOfYear(dateObject, Number(dayofyear)); }
|
||||
else if (week) {
|
||||
dateObject.setMonth(0);
|
||||
dateObject.setDate(1);
|
||||
var gd = dateObject.getDay();
|
||||
var day = (gd) ? gd : 7;
|
||||
var offset = Number(dayofweek) + (7 * Number(week));
|
||||
|
||||
if (day <= 4) { dateObject.setDate(offset + 1 - day); }
|
||||
else { dateObject.setDate(offset + 8 - day); }
|
||||
} else {
|
||||
if (month) {
|
||||
dateObject.setDate(1);
|
||||
dateObject.setMonth(month - 1);
|
||||
}
|
||||
if (date) { dateObject.setDate(date); }
|
||||
}
|
||||
|
||||
return dateObject;
|
||||
}
|
||||
|
||||
dojo.date.fromIso8601Date = function (string) {
|
||||
return dojo.date.setIso8601Date(new Date(0, 0), string);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.setIso8601Time = function (dateObject, string) {
|
||||
// first strip timezone info from the end
|
||||
var timezone = "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$";
|
||||
var d = string.match(new RegExp(timezone));
|
||||
|
||||
var offset = 0; // local time if no tz info
|
||||
if (d) {
|
||||
if (d[0] != 'Z') {
|
||||
offset = (Number(d[3]) * 60) + Number(d[5]);
|
||||
offset *= ((d[2] == '-') ? 1 : -1);
|
||||
}
|
||||
offset -= dateObject.getTimezoneOffset();
|
||||
string = string.substr(0, string.length - d[0].length);
|
||||
}
|
||||
|
||||
// then work out the time
|
||||
var regexp = "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(\.([0-9]+))?)?)?$";
|
||||
var d = string.match(new RegExp(regexp));
|
||||
if(!d) {
|
||||
dojo.debug("invalid time string: " + string);
|
||||
return false;
|
||||
}
|
||||
var hours = d[1];
|
||||
var mins = Number((d[3]) ? d[3] : 0);
|
||||
var secs = (d[5]) ? d[5] : 0;
|
||||
var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0;
|
||||
|
||||
dateObject.setHours(hours);
|
||||
dateObject.setMinutes(mins);
|
||||
dateObject.setSeconds(secs);
|
||||
dateObject.setMilliseconds(ms);
|
||||
|
||||
return dateObject;
|
||||
}
|
||||
|
||||
dojo.date.fromIso8601Time = function (string) {
|
||||
return dojo.date.setIso8601Time(new Date(0, 0), string);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Informational Functions
|
||||
**************************/
|
||||
|
||||
dojo.date.shortTimezones = ["IDLW", "BET", "HST", "MART", "AKST", "PST", "MST",
|
||||
"CST", "EST", "AST", "NFT", "BST", "FST", "AT", "GMT", "CET", "EET", "MSK",
|
||||
"IRT", "GST", "AFT", "AGTT", "IST", "NPT", "ALMT", "MMT", "JT", "AWST",
|
||||
"JST", "ACST", "AEST", "LHST", "VUT", "NFT", "NZT", "CHAST", "PHOT",
|
||||
"LINT"];
|
||||
dojo.date.timezoneOffsets = [-720, -660, -600, -570, -540, -480, -420, -360,
|
||||
-300, -240, -210, -180, -120, -60, 0, 60, 120, 180, 210, 240, 270, 300,
|
||||
330, 345, 360, 390, 420, 480, 540, 570, 600, 630, 660, 690, 720, 765, 780,
|
||||
840];
|
||||
/*
|
||||
dojo.date.timezones = ["International Date Line West", "Bering Standard Time",
|
||||
"Hawaiian Standard Time", "Marquesas Time", "Alaska Standard Time",
|
||||
"Pacific Standard Time (USA)", "Mountain Standard Time",
|
||||
"Central Standard Time (USA)", "Eastern Standard Time (USA)",
|
||||
"Atlantic Standard Time", "Newfoundland Time", "Brazil Standard Time",
|
||||
"Fernando de Noronha Standard Time (Brazil)", "Azores Time",
|
||||
"Greenwich Mean Time", "Central Europe Time", "Eastern Europe Time",
|
||||
"Moscow Time", "Iran Standard Time", "Gulf Standard Time",
|
||||
"Afghanistan Time", "Aqtobe Time", "Indian Standard Time", "Nepal Time",
|
||||
"Almaty Time", "Myanmar Time", "Java Time",
|
||||
"Australian Western Standard Time", "Japan Standard Time",
|
||||
"Australian Central Standard Time", "Lord Hove Standard Time (Australia)",
|
||||
"Vanuata Time", "Norfolk Time (Australia)", "New Zealand Standard Time",
|
||||
"Chatham Standard Time (New Zealand)", "Phoenix Islands Time (Kribati)",
|
||||
"Line Islands Time (Kribati)"];
|
||||
*/
|
||||
dojo.date.months = ["January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"];
|
||||
dojo.date.shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "June",
|
||||
"July", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
||||
dojo.date.days = ["Sunday", "Monday", "Tuesday", "Wednesday",
|
||||
"Thursday", "Friday", "Saturday"];
|
||||
dojo.date.shortDays = ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"];
|
||||
|
||||
|
||||
dojo.date.getDaysInMonth = function (dateObject) {
|
||||
var month = dateObject.getMonth();
|
||||
var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
||||
if (month == 1 && dojo.date.isLeapYear(dateObject)) { return 29; }
|
||||
else { return days[month]; }
|
||||
}
|
||||
|
||||
dojo.date.isLeapYear = function (dateObject) {
|
||||
/*
|
||||
* Leap years are years with an additional day YYYY-02-29, where the year
|
||||
* number is a multiple of four with the following exception: If a year
|
||||
* is a multiple of 100, then it is only a leap year if it is also a
|
||||
* multiple of 400. For example, 1900 was not a leap year, but 2000 is one.
|
||||
*/
|
||||
var year = dateObject.getFullYear();
|
||||
return (year%400 == 0) ? true : (year%100 == 0) ? false : (year%4 == 0) ? true : false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
dojo.date.getDayName = function (dateObject) {
|
||||
return dojo.date.days[dateObject.getDay()];
|
||||
}
|
||||
|
||||
dojo.date.getDayShortName = function (dateObject) {
|
||||
return dojo.date.shortDays[dateObject.getDay()];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.getMonthName = function (dateObject) {
|
||||
return dojo.date.months[dateObject.getMonth()];
|
||||
}
|
||||
|
||||
dojo.date.getMonthShortName = function (dateObject) {
|
||||
return dojo.date.shortMonths[dateObject.getMonth()];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.getTimezoneName = function (dateObject) {
|
||||
// need to negate timezones to get it right
|
||||
// i.e UTC+1 is CET winter, but getTimezoneOffset returns -60
|
||||
var timezoneOffset = -(dateObject.getTimezoneOffset());
|
||||
|
||||
for (var i = 0; i < dojo.date.timezoneOffsets.length; i++) {
|
||||
if (dojo.date.timezoneOffsets[i] == timezoneOffset) {
|
||||
return dojo.date.shortTimezones[i];
|
||||
}
|
||||
}
|
||||
|
||||
// we don't know so return it formatted as "+HH:MM"
|
||||
function $ (s) { s = String(s); while (s.length < 2) { s = "0" + s; } return s; }
|
||||
return (timezoneOffset < 0 ? "-" : "+") + $(Math.floor(Math.abs(
|
||||
timezoneOffset)/60)) + ":" + $(Math.abs(timezoneOffset)%60);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
dojo.date.getOrdinal = function (dateObject) {
|
||||
var date = dateObject.getDate();
|
||||
|
||||
if (date%100 != 11 && date%10 == 1) { return "st"; }
|
||||
else if (date%100 != 12 && date%10 == 2) { return "nd"; }
|
||||
else if (date%100 != 13 && date%10 == 3) { return "rd"; }
|
||||
else { return "th"; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Date Formatter Functions
|
||||
***************************/
|
||||
|
||||
// POSIX strftime
|
||||
// see <http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html>
|
||||
dojo.date.format = dojo.date.strftime = function (dateObject, format) {
|
||||
|
||||
// zero pad
|
||||
var padChar = null;
|
||||
function _ (s, n) {
|
||||
s = String(s);
|
||||
n = (n || 2) - s.length;
|
||||
while (n-- > 0) { s = (padChar == null ? "0" : padChar) + s; }
|
||||
return s;
|
||||
}
|
||||
|
||||
function $ (property) {
|
||||
switch (property) {
|
||||
case "a": // abbreviated weekday name according to the current locale
|
||||
return dojo.date.getDayShortName(dateObject); break;
|
||||
|
||||
case "A": // full weekday name according to the current locale
|
||||
return dojo.date.getDayName(dateObject); break;
|
||||
|
||||
case "b":
|
||||
case "h": // abbreviated month name according to the current locale
|
||||
return dojo.date.getMonthShortName(dateObject); break;
|
||||
|
||||
case "B": // full month name according to the current locale
|
||||
return dojo.date.getMonthName(dateObject); break;
|
||||
|
||||
case "c": // preferred date and time representation for the current
|
||||
// locale
|
||||
return dateObject.toLocaleString(); break;
|
||||
|
||||
case "C": // century number (the year divided by 100 and truncated
|
||||
// to an integer, range 00 to 99)
|
||||
return _(Math.floor(dateObject.getFullYear()/100)); break;
|
||||
|
||||
case "d": // day of the month as a decimal number (range 01 to 31)
|
||||
return _(dateObject.getDate()); break;
|
||||
|
||||
case "D": // same as %m/%d/%y
|
||||
return $("m") + "/" + $("d") + "/" + $("y"); break;
|
||||
|
||||
case "e": // day of the month as a decimal number, a single digit is
|
||||
// preceded by a space (range ' 1' to '31')
|
||||
if (padChar == null) { padChar = " "; }
|
||||
return _(dateObject.getDate(), 2); break;
|
||||
|
||||
case "g": // like %G, but without the century.
|
||||
break;
|
||||
|
||||
case "G": // The 4-digit year corresponding to the ISO week number
|
||||
// (see %V). This has the same format and value as %Y,
|
||||
// except that if the ISO week number belongs to the
|
||||
// previous or next year, that year is used instead.
|
||||
break;
|
||||
|
||||
case "F": // same as %Y-%m-%d
|
||||
return $("Y") + "-" + $("m") + "-" + $("d"); break;
|
||||
|
||||
case "H": // hour as a decimal number using a 24-hour clock (range
|
||||
// 00 to 23)
|
||||
return _(dateObject.getHours()); break;
|
||||
|
||||
case "I": // hour as a decimal number using a 12-hour clock (range
|
||||
// 01 to 12)
|
||||
return _(dateObject.getHours() % 12 || 12); break;
|
||||
|
||||
case "j": // day of the year as a decimal number (range 001 to 366)
|
||||
return _(dojo.date.getDayOfYear(dateObject), 3); break;
|
||||
|
||||
case "m": // month as a decimal number (range 01 to 12)
|
||||
return _(dateObject.getMonth() + 1); break;
|
||||
|
||||
case "M": // minute as a decimal numbe
|
||||
return _(dateObject.getMinutes()); break;
|
||||
|
||||
case "n":
|
||||
return "\n"; break;
|
||||
|
||||
case "p": // either `am' or `pm' according to the given time value,
|
||||
// or the corresponding strings for the current locale
|
||||
return dateObject.getHours() < 12 ? "am" : "pm"; break;
|
||||
|
||||
case "r": // time in a.m. and p.m. notation
|
||||
return $("I") + ":" + $("M") + ":" + $("S") + " " + $("p"); break;
|
||||
|
||||
case "R": // time in 24 hour notation
|
||||
return $("H") + ":" + $("M"); break;
|
||||
|
||||
case "S": // second as a decimal number
|
||||
return _(dateObject.getSeconds()); break;
|
||||
|
||||
case "t":
|
||||
return "\t"; break;
|
||||
|
||||
case "T": // current time, equal to %H:%M:%S
|
||||
return $("H") + ":" + $("M") + ":" + $("S"); break;
|
||||
|
||||
case "u": // weekday as a decimal number [1,7], with 1 representing
|
||||
// Monday
|
||||
return String(dateObject.getDay() || 7); break;
|
||||
|
||||
case "U": // week number of the current year as a decimal number,
|
||||
// starting with the first Sunday as the first day of the
|
||||
// first week
|
||||
return _(dojo.date.getWeekOfYear(dateObject)); break;
|
||||
|
||||
case "V": // week number of the year (Monday as the first day of the
|
||||
// week) as a decimal number [01,53]. If the week containing
|
||||
// 1 January has four or more days in the new year, then it
|
||||
// is considered week 1. Otherwise, it is the last week of
|
||||
// the previous year, and the next week is week 1.
|
||||
return _(dojo.date.getIsoWeekOfYear(dateObject)); break;
|
||||
|
||||
case "W": // week number of the current year as a decimal number,
|
||||
// starting with the first Monday as the first day of the
|
||||
// first week
|
||||
return _(dojo.date.getWeekOfYear(dateObject, 1)); break;
|
||||
|
||||
case "w": // day of the week as a decimal, Sunday being 0
|
||||
return String(dateObject.getDay()); break;
|
||||
|
||||
case "x": // preferred date representation for the current locale
|
||||
// without the time
|
||||
break;
|
||||
|
||||
case "X": // preferred date representation for the current locale
|
||||
// without the time
|
||||
break;
|
||||
|
||||
case "y": // year as a decimal number without a century (range 00 to
|
||||
// 99)
|
||||
return _(dateObject.getFullYear()%100); break;
|
||||
|
||||
case "Y": // year as a decimal number including the century
|
||||
return String(dateObject.getFullYear()); break;
|
||||
|
||||
case "z": // time zone or name or abbreviation
|
||||
var timezoneOffset = dateObject.getTimezoneOffset();
|
||||
return (timezoneOffset < 0 ? "-" : "+") +
|
||||
_(Math.floor(Math.abs(timezoneOffset)/60)) + ":" +
|
||||
_(Math.abs(timezoneOffset)%60); break;
|
||||
|
||||
case "Z": // time zone or name or abbreviation
|
||||
return dojo.date.getTimezoneName(dateObject); break;
|
||||
|
||||
case "%":
|
||||
return "%"; break;
|
||||
}
|
||||
}
|
||||
|
||||
// parse the formatting string and construct the resulting string
|
||||
var string = "";
|
||||
var i = 0, index = 0, switchCase;
|
||||
while ((index = format.indexOf("%", i)) != -1) {
|
||||
string += format.substring(i, index++);
|
||||
|
||||
// inspect modifier flag
|
||||
switch (format.charAt(index++)) {
|
||||
case "_": // Pad a numeric result string with spaces.
|
||||
padChar = " "; break;
|
||||
case "-": // Do not pad a numeric result string.
|
||||
padChar = ""; break;
|
||||
case "0": // Pad a numeric result string with zeros.
|
||||
padChar = "0"; break;
|
||||
case "^": // Convert characters in result string to upper case.
|
||||
switchCase = "upper"; break;
|
||||
case "#": // Swap the case of the result string.
|
||||
switchCase = "swap"; break;
|
||||
default: // no modifer flag so decremenet the index
|
||||
padChar = null; index--; break;
|
||||
}
|
||||
|
||||
// toggle case if a flag is set
|
||||
var property = $(format.charAt(index++));
|
||||
if (switchCase == "upper" ||
|
||||
(switchCase == "swap" && /[a-z]/.test(property))) {
|
||||
property = property.toUpperCase();
|
||||
} else if (switchCase == "swap" && !/[a-z]/.test(property)) {
|
||||
property = property.toLowerCase();
|
||||
}
|
||||
var swicthCase = null;
|
||||
|
||||
string += property;
|
||||
i = index;
|
||||
}
|
||||
string += format.substring(i);
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
/* compare and add
|
||||
******************/
|
||||
dojo.date.compareTypes={
|
||||
// summary
|
||||
// bitmask for comparison operations.
|
||||
DATE:1, TIME:2
|
||||
};
|
||||
dojo.date.compare=function(/* Date */ dateA, /* Date */ dateB, /* int */ options){
|
||||
// summary
|
||||
// Compare two date objects by date, time, or both.
|
||||
var dA=dateA;
|
||||
var dB=dateB||new Date();
|
||||
var now=new Date();
|
||||
var opt=options||(dojo.date.compareTypes.DATE|dojo.date.compareTypes.TIME);
|
||||
var d1=new Date(
|
||||
((opt&dojo.date.compareTypes.DATE)?(dA.getFullYear()):now.getFullYear()),
|
||||
((opt&dojo.date.compareTypes.DATE)?(dA.getMonth()):now.getMonth()),
|
||||
((opt&dojo.date.compareTypes.DATE)?(dA.getDate()):now.getDate()),
|
||||
((opt&dojo.date.compareTypes.TIME)?(dA.getHours()):0),
|
||||
((opt&dojo.date.compareTypes.TIME)?(dA.getMinutes()):0),
|
||||
((opt&dojo.date.compareTypes.TIME)?(dA.getSeconds()):0)
|
||||
);
|
||||
var d2=new Date(
|
||||
((opt&dojo.date.compareTypes.DATE)?(dB.getFullYear()):now.getFullYear()),
|
||||
((opt&dojo.date.compareTypes.DATE)?(dB.getMonth()):now.getMonth()),
|
||||
((opt&dojo.date.compareTypes.DATE)?(dB.getDate()):now.getDate()),
|
||||
((opt&dojo.date.compareTypes.TIME)?(dB.getHours()):0),
|
||||
((opt&dojo.date.compareTypes.TIME)?(dB.getMinutes()):0),
|
||||
((opt&dojo.date.compareTypes.TIME)?(dB.getSeconds()):0)
|
||||
);
|
||||
if(d1.valueOf()>d2.valueOf()){
|
||||
return 1; // int
|
||||
}
|
||||
if(d1.valueOf()<d2.valueOf()){
|
||||
return -1; // int
|
||||
}
|
||||
return 0; // int
|
||||
}
|
||||
|
||||
dojo.date.dateParts={
|
||||
// summary
|
||||
// constants for use in dojo.date.add
|
||||
YEAR:0, MONTH:1, DAY:2, HOUR:3, MINUTE:4, SECOND:5, MILLISECOND:6
|
||||
};
|
||||
dojo.date.add=function(/* Date */ d, /* dojo.date.dateParts */ unit, /* int */ amount){
|
||||
var n=(amount)?amount:1;
|
||||
var v;
|
||||
switch(unit){
|
||||
case dojo.date.dateParts.YEAR:{
|
||||
v=new Date(d.getFullYear()+n, d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());
|
||||
break;
|
||||
}
|
||||
case dojo.date.dateParts.MONTH:{
|
||||
v=new Date(d.getFullYear(), d.getMonth()+n, d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());
|
||||
break;
|
||||
}
|
||||
case dojo.date.dateParts.HOUR:{
|
||||
v=new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours()+n, d.getMinutes(), d.getSeconds(), d.getMilliseconds());
|
||||
break;
|
||||
}
|
||||
case dojo.date.dateParts.MINUTE:{
|
||||
v=new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes()+n, d.getSeconds(), d.getMilliseconds());
|
||||
break;
|
||||
}
|
||||
case dojo.date.dateParts.SECOND:{
|
||||
v=new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds()+n, d.getMilliseconds());
|
||||
break;
|
||||
}
|
||||
case dojo.date.dateParts.MILLISECOND:{
|
||||
v=new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()+n);
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
v=new Date(d.getFullYear(), d.getMonth(), d.getDate()+n, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());
|
||||
}
|
||||
};
|
||||
return v; // Date
|
||||
};
|
||||
|
||||
/* Deprecated
|
||||
*************/
|
||||
|
||||
|
||||
dojo.date.toString = function(date, format){
|
||||
dojo.deprecated("dojo.date.toString",
|
||||
"use dojo.date.format instead", "0.4");
|
||||
|
||||
if (format.indexOf("#d") > -1) {
|
||||
format = format.replace(/#dddd/g, dojo.date.getDayOfWeekName(date));
|
||||
format = format.replace(/#ddd/g, dojo.date.getShortDayOfWeekName(date));
|
||||
format = format.replace(/#dd/g, (date.getDate().toString().length==1?"0":"")+date.getDate());
|
||||
format = format.replace(/#d/g, date.getDate());
|
||||
}
|
||||
|
||||
if (format.indexOf("#M") > -1) {
|
||||
format = format.replace(/#MMMM/g, dojo.date.getMonthName(date));
|
||||
format = format.replace(/#MMM/g, dojo.date.getShortMonthName(date));
|
||||
format = format.replace(/#MM/g, ((date.getMonth()+1).toString().length==1?"0":"")+(date.getMonth()+1));
|
||||
format = format.replace(/#M/g, date.getMonth() + 1);
|
||||
}
|
||||
|
||||
if (format.indexOf("#y") > -1) {
|
||||
var fullYear = date.getFullYear().toString();
|
||||
format = format.replace(/#yyyy/g, fullYear);
|
||||
format = format.replace(/#yy/g, fullYear.substring(2));
|
||||
format = format.replace(/#y/g, fullYear.substring(3));
|
||||
}
|
||||
|
||||
// Return if only date needed;
|
||||
if (format.indexOf("#") == -1) {
|
||||
return format;
|
||||
}
|
||||
|
||||
if (format.indexOf("#h") > -1) {
|
||||
var hours = date.getHours();
|
||||
hours = (hours > 12 ? hours - 12 : (hours == 0) ? 12 : hours);
|
||||
format = format.replace(/#hh/g, (hours.toString().length==1?"0":"")+hours);
|
||||
format = format.replace(/#h/g, hours);
|
||||
}
|
||||
|
||||
if (format.indexOf("#H") > -1) {
|
||||
format = format.replace(/#HH/g, (date.getHours().toString().length==1?"0":"")+date.getHours());
|
||||
format = format.replace(/#H/g, date.getHours());
|
||||
}
|
||||
|
||||
if (format.indexOf("#m") > -1) {
|
||||
format = format.replace(/#mm/g, (date.getMinutes().toString().length==1?"0":"")+date.getMinutes());
|
||||
format = format.replace(/#m/g, date.getMinutes());
|
||||
}
|
||||
|
||||
if (format.indexOf("#s") > -1) {
|
||||
format = format.replace(/#ss/g, (date.getSeconds().toString().length==1?"0":"")+date.getSeconds());
|
||||
format = format.replace(/#s/g, date.getSeconds());
|
||||
}
|
||||
|
||||
if (format.indexOf("#T") > -1) {
|
||||
format = format.replace(/#TT/g, date.getHours() >= 12 ? "PM" : "AM");
|
||||
format = format.replace(/#T/g, date.getHours() >= 12 ? "P" : "A");
|
||||
}
|
||||
|
||||
if (format.indexOf("#t") > -1) {
|
||||
format = format.replace(/#tt/g, date.getHours() >= 12 ? "pm" : "am");
|
||||
format = format.replace(/#t/g, date.getHours() >= 12 ? "p" : "a");
|
||||
}
|
||||
|
||||
return format;
|
||||
|
||||
}
|
||||
|
||||
|
||||
dojo.date.daysInMonth = function (month, year) {
|
||||
dojo.deprecated("daysInMonth(month, year)",
|
||||
"replaced by getDaysInMonth(dateObject)", "0.4");
|
||||
return dojo.date.getDaysInMonth(new Date(year, month, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns a string of the date in the version "January 1, 2004"
|
||||
*
|
||||
* @param date The date object
|
||||
*/
|
||||
dojo.date.toLongDateString = function(date) {
|
||||
dojo.deprecated("dojo.date.toLongDateString",
|
||||
'use dojo.date.format(date, "%B %e, %Y") instead', "0.4");
|
||||
return dojo.date.format(date, "%B %e, %Y")
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns a string of the date in the version "Jan 1, 2004"
|
||||
*
|
||||
* @param date The date object
|
||||
*/
|
||||
dojo.date.toShortDateString = function(date) {
|
||||
dojo.deprecated("dojo.date.toShortDateString",
|
||||
'use dojo.date.format(date, "%b %e, %Y") instead', "0.4");
|
||||
return dojo.date.format(date, "%b %e, %Y");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns military formatted time
|
||||
*
|
||||
* @param date the date object
|
||||
*/
|
||||
dojo.date.toMilitaryTimeString = function(date){
|
||||
dojo.deprecated("dojo.date.toMilitaryTimeString",
|
||||
'use dojo.date.format(date, "%T")', "0.4");
|
||||
return dojo.date.format(date, "%T");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns a string of the date relative to the current date.
|
||||
*
|
||||
* @param date The date object
|
||||
*
|
||||
* Example returns:
|
||||
* - "1 minute ago"
|
||||
* - "4 minutes ago"
|
||||
* - "Yesterday"
|
||||
* - "2 days ago"
|
||||
*/
|
||||
dojo.date.toRelativeString = function(date) {
|
||||
var now = new Date();
|
||||
var diff = (now - date) / 1000;
|
||||
var end = " ago";
|
||||
var future = false;
|
||||
if(diff < 0) {
|
||||
future = true;
|
||||
end = " from now";
|
||||
diff = -diff;
|
||||
}
|
||||
|
||||
if(diff < 60) {
|
||||
diff = Math.round(diff);
|
||||
return diff + " second" + (diff == 1 ? "" : "s") + end;
|
||||
} else if(diff < 3600) {
|
||||
diff = Math.round(diff/60);
|
||||
return diff + " minute" + (diff == 1 ? "" : "s") + end;
|
||||
} else if(diff < 3600*24 && date.getDay() == now.getDay()) {
|
||||
diff = Math.round(diff/3600);
|
||||
return diff + " hour" + (diff == 1 ? "" : "s") + end;
|
||||
} else if(diff < 3600*24*7) {
|
||||
diff = Math.round(diff/(3600*24));
|
||||
if(diff == 1) {
|
||||
return future ? "Tomorrow" : "Yesterday";
|
||||
} else {
|
||||
return diff + " days" + end;
|
||||
}
|
||||
} else {
|
||||
return dojo.date.toShortDateString(date);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the day of the week the Date is set to.
|
||||
*
|
||||
* @return The day of the week
|
||||
*/
|
||||
dojo.date.getDayOfWeekName = function (date) {
|
||||
dojo.deprecated("dojo.date.getDayOfWeekName",
|
||||
"use dojo.date.getDayName instead", "0.4");
|
||||
return dojo.date.days[date.getDay()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the short day of the week name the Date is set to.
|
||||
*
|
||||
* @return The short day of the week name
|
||||
*/
|
||||
dojo.date.getShortDayOfWeekName = function (date) {
|
||||
dojo.deprecated("dojo.date.getShortDayOfWeekName",
|
||||
"use dojo.date.getDayShortName instead", "0.4");
|
||||
return dojo.date.shortDays[date.getDay()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the short month name the Date is set to.
|
||||
*
|
||||
* @return The short month name
|
||||
*/
|
||||
dojo.date.getShortMonthName = function (date) {
|
||||
dojo.deprecated("dojo.date.getShortMonthName",
|
||||
"use dojo.date.getMonthShortName instead", "0.4");
|
||||
return dojo.date.shortMonths[date.getMonth()];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert a Date to a SQL string, optionally ignoring the HH:MM:SS portion of the Date
|
||||
*/
|
||||
dojo.date.toSql = function(date, noTime) {
|
||||
return dojo.date.format(date, "%F" + !noTime ? " %T" : "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a SQL date string to a JavaScript Date object
|
||||
*/
|
||||
dojo.date.fromSql = function(sqlDate) {
|
||||
var parts = sqlDate.split(/[\- :]/g);
|
||||
while(parts.length < 6) {
|
||||
parts.push(0);
|
||||
}
|
||||
return new Date(parts[0], (parseInt(parts[1],10)-1), parts[2], parts[3], parts[4], parts[5]);
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue