JavaScriptカスタムDateDiff関数(すべてのブラウザに対応)
3378 ワード
<br>function NewDate(str) {
<br>str = str.split('-');
<br>var date = new Date();
<br>date.setUTCFullYear(str[0], str[1] - 1, str[2]);
<br>date.setUTCHours(0, 0, 0, 0);
<br>return date;
<br>}
<br>function TimeCom(dateValue) {
<br>var newCom;
<br>
<br>if (dateValue == "") {
<br>newCom = new Date();
<br>} else {
<br>newCom = NewDate(dateValue);
<br>}
<br>this.year = newCom.getYear();
<br>this.month = newCom.getMonth() + 1;
<br>this.day = newCom.getDate();
<br>this.hour = newCom.getHours();
<br>this.minute = newCom.getMinutes();
<br>this.second = newCom.getSeconds();
<br>this.msecond = newCom.getMilliseconds();
<br>this.week = newCom.getDay();
<br>}
<br>function DateDiff(interval, date1, date2) {
<br>var TimeCom1 = new TimeCom(date1);
<br>var TimeCom2 = new TimeCom(date2);
<br>var result;
<br>switch (String(interval).toLowerCase()) {
<br>case "y":
<br>case "year":
<br>result = TimeCom1.year - TimeCom2.year;
<br>break;
<br>case "m":
<br>case "month":
<br>result = (TimeCom1.year - TimeCom2.year) * 12 + (TimeCom1.month - TimeCom2.month);
<br>break;
<br>case "d":
<br>case "day":
<br>result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day)) / (1000 * 60 * 60 * 24));
<br>break;
<br>case "h":
<br>case "hour":
<br>result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour)) / (1000 * 60 * 60));
<br>break;
<br>case "min":
<br>case "minute":
<br>result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute)) / (1000 * 60));
<br>break;
<br>case "s":
<br>case "second":
<br>result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute, TimeCom1.second) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute, TimeCom2.second)) / 1000);
<br>break;
<br>case "ms":
<br>case "msecond":
<br>result = Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute, TimeCom1.second, TimeCom1.msecond) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute, TimeCom2.second, TimeCom1.msecond);
<br>break;
<br>case "w":
<br>case "week":
<br>result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day)) / (1000 * 60 * 60 * 24)) % 7;
<br>break;
<br>default:
<br>result = "invalid";
<br>}
<br>return (result);
<br>}
<br>