var Utility = {
getServiceUrl: function () {
/// WebサービスのURLを取得します。
/// WebサービスのURL
return '../../Services.svc'.replace(/\/+$/, "");
},
getStringTime: function (dateObj, todayFlag) {
/// 時間オブジェクトを文字列に変換します。
/// 時間オブジェクト
/// 午前0フラグ(指定すると今日の午前0時を取得。省略可)
/// 時刻を表す文字列(yyyyMMddHHmm)
var year = dateObj.getFullYear().toString();
var month = ('0' + (dateObj.getMonth() + 1).toString()).slice(-2);
var day = ('0' + dateObj.getDate().toString()).slice(-2);
var hour = ('0' + dateObj.getHours().toString()).slice(-2);
var min = ('0' + dateObj.getMinutes().toString()).slice(-2);
var sec = ('0' + dateObj.getSeconds().toString()).slice(-2);
return todayFlag ? year + month + day + '000000'
: year + month + day + hour + min + sec;
},
getStartTime: function (dateObj, addYear) {
/// データ取得開始時刻の文字列を取得します
/// 時間オブジェクト
/// 足し引きする年数
/// 時刻を表す文字列(yyyyMMddHHmm)
var year = (dateObj.getFullYear() + addYear).toString();
var month = ('0' + (dateObj.getMonth() + 1).toString()).slice(-2);
var day = ('0' + dateObj.getDate().toString()).slice(-2);
var hour = ('0' + dateObj.getHours().toString()).slice(-2);
var min = ('0' + dateObj.getMinutes().toString()).slice(-2);
var sec = ('0' + dateObj.getSeconds().toString()).slice(-2);
return year + month + day + hour + min + sec;
},
convertMilitime: function (stringTime, type) {
/// 日付を表す文字列をミリ秒に変換します。
/// 日付を表す文字列(yyyyMMddHHmm)
/// ミリ秒
var year = stringTime.substr(0, 4);
var month = (Number(stringTime.substr(4, 2)) - 1).toString();
var day = stringTime.substr(6, 2);
var hour = stringTime.substr(8, 2);
var minute = stringTime.substr(10, 2);
var date;
// 分足の場合はhour, minuteまで必要
if (type === '1') {
var d = new Date(year, month, day, hour, minute, 0, 0);
date = d.valueOf();
} else {
date = Date.UTC(year, month, day);
}
return date;
},
computeDate: function (year, month, day, addDays) {
/// 日付を足し引きした結果を返します。
/// 年
/// 月
/// 日
/// 足し引きする日付
/// 計算した時間オブジェクト
var dt = new Date(year, month - 1, day);
var baseSec = dt.getTime();
var addSec = addDays * 86400000; //日数 * 1日のミリ秒数
var targetSec = baseSec + addSec;
dt.setTime(targetSec);
return dt;
},
computeMinute: function (year, month, day, hour, minute, addDays) {
/// 日付を足し引きした結果を返します。
/// 年
/// 月
/// 日
/// 足し引きする日付
/// 計算した時間オブジェクト
var dt = new Date(year, month - 1, day, hour, minute);
var baseSec = dt.getTime();
var addSec = addDays * 86400000; //日数 * 1日のミリ秒数
var targetSec = baseSec + addSec;
dt.setTime(targetSec);
return dt;
},
formatObject: function (obj) {
/// 四本値データのフォーマットを整えます。
/// 四本値データのオブジェクト
/// フォーマットを整えた四本値データのオブジェクト
var type = $('#datatype').val();
var resultArr = [];
var latestDate = obj[obj.length - 1].Date.substr(0, 8);
for (var i = 0, len = obj.length; i < len; i++) {
if (obj[i].EndValue !== '' && obj[i].StartValue !== '' && obj[i].MinValue !== '' && obj[i].MaxValue !== '') {
// 分足の時だけ、移動平均計算用の不要なデータを除く。
if (type === '1' && obj[i].Date.substr(0, 8) !== latestDate) {
continue;
}
var newObj = {};
newObj.EndValue = obj[i].EndValue;
newObj.MaxValue = obj[i].MaxValue;
newObj.Volume = obj[i].Volume;
newObj.MinValue = obj[i].MinValue;
newObj.Date = Utility.convertMilitime(obj[i].Date, type);
newObj.StartValue = obj[i].StartValue;
resultArr.push(newObj);
}
}
return resultArr;
},
setComma: function (strNum) {
/// 値段をカンマ区切りにします。
/// 値段の文字列
/// カンマ区切りした値段の文字列
var result = new String(strNum).replace(/,/g, "");
while (result !== (result = result.replace(/^([+-]?\d+)(\d{3})/, "$1,$2")));
return result;
},
convertUnit: function (strPrice, jpFlag) {
/// 売買代金の単位を変換します。
/// 売買代金の文字列
/// 日本語かどうか
/// 変換後の文字列
if (strPrice === "----") {
return strPrice;
}
var result = '';
if (strPrice !== '') {
var intPrice = Number(strPrice);
if (intPrice >= 1000 && jpFlag) {
result = Utility.setComma(Math.floor(intPrice / 1000)) + '千';
} else {
result = Utility.setComma(intPrice);
}
}
return result;
}
}