wedata

Database: UStoreScriptFunction9

Item Details: 日時の変換

spec_version 1
content /** * 文字列から年月日時分として取り出しす。 * [例] * parseYMDHM("2012/3/5 12:07") == "2012-03-05T12:07:00" * parseYMDHM("2012年3月5日 12:00") == "2012-03-05T12:00:00" * @param str 半角または全角の数字の文字を含む文字列 * @return 年月日時分 */ function parseYMDHM(str) { var nums = pickupNumZ(str, false); if (nums[2] > 31) // 日と時の間のスペースが無視された場合 if (nums[2] < 320) { // nums[2] == 112 などの場合は間違う恐れあり nums[4] = nums[3]; nums[3] = nums[2] % 10; nums[2] = Math.floor(nums[2] / 10 + 0.1); } else { nums[4] = nums[3]; nums[3] = nums[2] % 100; nums[2] = Math.floor(nums[2] / 100 + 0.1); } return nums[0] + "-" + toDigit2(nums[1]) + "-" + toDigit2(nums[2]) + "T" + toDigit2(nums[3]) + ":" + toDigit2(nums[4]) + ":00"; } /** * 文字列から先頭の1個の整数を平成の年としてを取り出し、西暦年に変換する。 * [例] * parseHyear("平成23年") == 2011 * parseHyear("H23") == 2011 * parseHyear("23") == 2011 * @param str 半角または全角の数字の文字を含む文字列 * @return 西暦年 */ function parseHyear(str) { var nums = pickupNumZ(str, false); return ""+ (nums[0] + 1988); } /** * 文字列から平成の年月日として取り出し、西暦年月日に変換する。 * [例] * parseHdate("平成23年9月24日") == "2011-09-24" * parseHdate("H23.12.4 (晴)") == "2011-12-04" * parseHdate("23.9.24") == "2011-09-24" * @param str 半角または全角の数字の文字を含む文字列 * @return 西暦年月日 */ function parseHdate(str) { var nums = pickupNumZ(str, false); return (nums[0] + 1988) +"-"+ toDigit2(nums[1]) +"-"+ toDigit2(nums[2]); } /** * 文字列から月日を取り出す。 * [例] * parseMMDD("9月24日 雨") == "09-24" * parseMMDD("9.24 (晴)") == "09-24" * parseMMDD("10.24") == "10-24" * @param str 半角または全角の数字の文字を含む文字列 * @return 月日 */ function parseMMDD(str) { var nums = pickupNumZ(str, false); return toDigit2(nums[0]) +"-"+ toDigit2(nums[1]); } /** * 文字列から時分を取り出しす。 * [例] * parseHHmm("9時23分") == "09:23" * parseHHmm("9.3") == "09:03" * parseHHmm("午後9時3分") == "21:03" * parseHHmm("-") => 00:00 * @param str 文字列 * @return 時分 */ function parseHHmm(str) { var nums = pickupNumZ(str, false); if (nums.length < 2) return "00:00"; if (str[0] == "後" || str[1] == "後") nums[0] += 12; if (nums.length > 1) return toDigit2(nums[0]) +":"+ toDigit2(nums[1]); else return toDigit2(nums[0]) +":00"; } /** * 1桁の数字の前に"0"を補って2桁にする。 * [例] * twoDigits("12月") == "12" * twoDigits("1日") == "01" * @param num 半角または全角の数字の1贈ォ2桁の数字を含む文字列 * @return 2桁の数字 */ function twoDigits(str) { var nums = pickupNumZ(str, false); return toDigit2(nums[0]); } /** * yy.mm.dd形式のymd(yyは平成の年)とhh:mm形式の時分をYYYY-MM-DDThh:mm:00形式の時刻に変換する。 * makeDate1("平23.8.31","9:55") == "2011-08-31T09:55:00" * @param ymd yy.mm.dd形式の年月日(yyは平成の年) (string) * @param hm hh:mm形式の時分 (string) * @return YYYY-MM-DDThh:mm:00形式の時刻(string) */ function makeDate1(ymd,hm) { if (ymd.length == 0 || hm.length == 0) return ""; for(var i = 0; ymd[i] < '0' || '9' < ymd[i]; i++); ymd = ymd.substring(i); var yymmdd = ymd.split('.'); var year = parseInt(yymmdd[0]) + 1988; var month = yymmdd[1]; if (month.length == 1) month = '0' + month; var day = yymmdd[2]; if (day.length == 1) day = '0' + day; var i = hm.indexOf(':'); var hour = hm.substring(0, i); if (hour.length == 1) hour = '0' + hour; var minute = hm.substring(i+1); if (minute.length == 1) minute = '0' + minute; return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00'; } function makeDate1r(ymd,hm) { if (ymd.length == 0 || hm.length == 0) return ""; for(var i = 0; ymd[i] < '0' || '9' < ymd[i]; i++); ymd = ymd.substring(i); var yymmdd = pickupNumZ(ymd, false); if (yymmdd[0] > 2000) { var day = yymmdd[0] - 2000; var year = parseInt(yymmdd[2]) + 1988; } else { var year = parseInt(yymmdd[0]) + 1988; var day = yymmdd[2]; } var month = yymmdd[1]; if (month.length == 1) month = '0' + month; if (day.length == 1) day = '0' + day; var i = hm.indexOf(':'); var hour = hm.substring(0, i); if (hour.length == 1) hour = '0' + hour; var minute = hm.substring(i+1); if (minute.length == 1) minute = '0' + minute; return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00'; } /** * yy.mm.dd形式がPDF変換によりdd.mm.yyと認識され、 * 20dd-mm-yyT00:00:00.000に変換される場合の対応。 * YYYY-MM-DDThh:mm:00形式の時刻に変換して返す。 * @param ymd yy.mm.dd形式の年月日(yyは平成の年) (string) * @param hm hh:mm形式の時分 (string) * @return YYYY-MM-DDThh:mm:00形式の時刻(string) */ function makeDate1x(ymd,hm) { //var yymmdd = ymd.split('.'); var year = parseInt(ymd.substring(8,10)) + 1988; var month = ymd.substring(5,7); var day = ymd.substring(2,4); var i = hm.indexOf(':'); var hour = hm.substring(0, i); if (hour.length == 1) hour = '0' + hour; var minute = hm.substring(i+1); if (minute.length == 1) minute = '0' + minute; return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00'; } /** * 「YYYY」形式の年、「数字+文字」形式の月、「hh」形式の時間、「mm」形式の分から、YYYY-MM-DDThh:mm:00形式の時刻に変換して返す。 * @param year 「YYYY」形式の年(string) * @param mmdd 「数字+文字」形式の月。たとえば"8月17日" (string) * @param hour 「hh」形式の時間(string) * @param minute 「mm」形式の分(string) * @return YYYY-MM-DDThh:mm:00形式の時刻(string) */ function makeDate2(year, mmdd, hour, minute) { var nums = pickupNums(mmdd); var month = nums[0]; if (month < 10) month = '0' + month; var day = nums[1]; if (day < 10) day = '0' + day; return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00'; }

History

Back