content |
/**
* "d度m分s秒"形式を固定小数点数値の度数に変換して返す。
* @param d 度の数値を含む文字列 (string)
* @param m 分の数値を含む文字列 (string)
* @param s 秒の数値を含む文字列 (string)
* @return 固定小数点数値の度数(double)
*/
function parseDegree(d,m,s) {
var dd = pickupNum(d);
var mm = pickupNum(m);
var ss = pickupNum(s);
var n = dd + (mm / 60) + (ss / 3600);
return n;
}
/**
* 文字列から最初に出現した固定小数点数値を抽出して返す。
* @param str 文字列 (string)
* @return 固定小数点数値の度数(double)
*/
function pickupNum(str) {
var size = str.length;
var s = -1;
var e = 0;
var fract = false;
for (var i = 0; i < size; i++) {
var ch = str.charAt(i);
if ('0' <= ch && ch <= '9') {
if (s < 0) s = i;
e = i;
} else
if (ch == '.') {
if (fract) break;
fract = true;
} else {
break;
}
}
return parseFloat(str.substring(s, e+1));
}
/**
* 「YYYY」形式の年、「数字+文字」形式の月、「hh」形式の時間、「mm」形式の分から、YYYY-MM-DDThh:mm:00形式の時刻に変換して返す。
* @param year 「YYYY」形式の年(string)
* @param mmdd 「数字+文字」形式の月。例 12月 (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';
}
/**
* 数値と文字が混じった文字列から、数値を抽出して、出現順に配列にして返す。
* @param str 文字列 (string)
* @return 数値(double)の配列
*/
function pickupNums(str) {
var nums = new Array();
var n = 0;
var s = -1;
var e = 0;
var inNum = false;
var fract = false;
var size = str.length;
for (var i = 0; i < size; i++) {
var ch = str.charAt(i);
if ('0' <= ch && ch <= '9') {
if (!inNum) s = i;
e = i;
inNum = true;
} else
if (ch == '.') {
if (inNum) {
if (fract) {
nums[n++] = parseFloat(str.substring(s, e+1));
inNum = false;
fract = false;
} else {
fract = true;
}
}
} else {
if (inNum) nums[n++] = parseFloat(str.substring(s, e+1));
inNum = false;
}
}
if (inNum) nums[n++] = parseFloat(str.substring(s, e+1));
return nums;
}
/**
* 文字列1の先頭に文字列2が含まれていたらそれを除いた文字列を返す。
* 含まれていない場合は、文字列1を返す。
* 使用例: $removeStr2("茨城県つくば市","茨城県") => つくば市
* @param s1 文字列1
* @param s2 文字列2
* @return 文字列1の先頭の文字列2を取り除く
*/
function removeStr2(s1, s2) {
var i = s1.indexOf(s2);
if (i == 0) {
return s1.substring(s2.length);
} else {
return s1;
}
}
|