function test1(){
// 現在日時が「2017-10-23 11:55:00」の30秒後であるかチェックする
var flg = checkAfterSeconds('2017-10-23 11:55:00',30);
$('#res1').append(flg + '<br>');
}
/**
* 現在日時が指定日時のn秒後であるかチェックする
*
* @note
* 文字列型日付、日付オブジェクトの両方に対応
*
* @param d1 指定日時
* @param n n秒後
* @returns 結果 0:n秒前 , 1:n秒後
*
*/
function checkAfterSeconds(d1,n){
// 引数が文字列型の日付なら日付オブジェクトに変換
if(typeof d1 == "string"){
if(d1.indexOf('-') > -1){
d1 = d1.replace('-','/');// IEは「-」の区分に対応していないので「/」に置換
}
d1 = new Date(d1);
}
var d_u = Math.floor(d1);
var now_u = Math.floor(new Date());
if(now_u > d_u + n * 1000){
return 1;
}else{
return 0;
}
}
var date1 = new Date();
var year = date1.getFullYear(); //年
var month = date1.getMonth(); //月
var day = date1.getDate(); //日
var date1 = new Date('2018-11-30');
date1.setDate(date1.getDate() + 2); // → 2018-12-2
var date1 = new Date('2018-11-30');
date1.setDate(date1.getDate() - 2); // → 2018-11-28
/**
* 日付フォーマット変換
* @param mixed date1 日付
* @param string format フォーマット Y-m-d, Y/m/d h:i:s など
* @returns string 「yyyy-mm-dd」形式の日付文字列
*/
function dateFormat(date1, format){
if(date1 == null) date1 = new Date().toLocaleString();
if(format == null) format = 'Y-m-d';
// 引数が文字列型であれば日付型に変換する
if((typeof date1) == 'string'){
date1 = new Date(date1);
if(date1 == 'Invalid Date'){
return null;
}
}
var year = date1.getFullYear();
var month = date1.getMonth() + 1;
month = ("0" + month).slice(-2); // 2桁の文字列に変換する
var day = date1.getDate();
day = ("0" + day).slice(-2);
var houre = date1.getHours();
houre = ("0" + houre).slice(-2);
var minute = date1.getMinutes();
minute = ("0" + minute).slice(-2);
var second = date1.getSeconds();
second = ("0" + second).slice(-2); // 2桁の文字列に変換する
var date_str = format;
date_str = date_str.replace('Y', year);
date_str = date_str.replace('m', month);
date_str = date_str.replace('d', day);
date_str = date_str.replace('h', houre);
date_str = date_str.replace('i', minute);
date_str = date_str.replace('s', second);
//var date_str = year + '-' + month + '-' + day;
return date_str;
}
出力
変換前 | フォーマット | 変換後 |
---|---|---|
null | Y-m-d | 2019-07-14 |
1990-1-1 | Y-m-d | 1990-01-01 |
2019-1-1 | Y-m-d | 2019-01-01 |
2019/1/1 | Y-m-d | 2019-01-01 |
2019/1/12 | Y-m-d | 2019-01-12 |
2019-1-31 | Y-m-d | 2019-01-31 |
2019-2-29 | Y-m-d | 2019-03-01 |
2019-8-32 | Y-m-d | null |
2019-10-10 1:2:3 | Y/m/d h:i:s | 2019/10/10 01:02:03 |
2019-12-31 | Y-m-d | 2019-12-31 |
2050-12-31 | Y-m-d | 2050-12-31 |
1990-1-1 1:2:3 | Y-m-d h:i:s | 1990-01-01 01:02:03 |
2019-7-14 12:13:14 | Y-m-d h:i:s | 2019-07-14 12:13:14 |
2019-7-14 12:13 | Y-m-d h:i:s | 2019-07-14 12:13:00 |
2019-7-14 12 | Y-m-d h:i:s | null |
2019-7-14 | Y-m-d h:i:s | 2019-07-14 00:00:00 |
2019-7 | Y-m-d h:i:s | 2019-07-01 00:00:00 |
2019 | Y-m-d h:i:s | 2019-01-01 09:00:00 |
AAA | Y-m-d | null |
旧式
/**
* 日付オブジェクトを「y-m-d」形式の日付書式に変換する
* @param Date date1 日付オブジェクト
* @returns string 「y-m-d」形式の日付文字列
*/
function convDateToYMD(date1){
// 引数が文字列型であれば日付型に変換する
if((typeof date1) == 'string'){
date1 = new Date(date1);
if(date1 == 'Invalid Date'){
return null;
}
}
var year = date1.getFullYear();
var month = date1.getMonth() + 1;
var day = date1.getDate();
var date_str = year + '-' + month + '-' + day;
return date_str;
}
/**
* 日付の書式を「yyyy-mm-dd」形式に変換する
* @param mixed date1 日付
* @returns string 「yyyy-mm-dd」形式の日付文字列
*/
function convDateTo_yyyymmdd(date1){
// 引数が文字列型であれば日付型に変換する
if((typeof date1) == 'string'){
date1 = new Date(date1);
if(date1 == 'Invalid Date'){
return null;
}
}
var year = date1.getFullYear();
var month = date1.getMonth() + 1;
month = ("0" + month).slice(-2); // 2桁の文字列に変換する
var day = date1.getDate();
day = ("0" + day).slice(-2);
var date_str = year + '-' + month + '-' + day;
return date_str;
}
検証before | after |
---|---|
1990-1-1 | 1990-01-01 |
2019-1-1 | 2019-01-01 |
2019/1/1 | 2019-01-01 |
2019/1/12 | 2019-01-12 |
2019-1-31 | 2019-01-31 |
2019-2-29 | 2019-03-01 |
2019-8-32 | null |
2019-10-10 1:2:3 | 2019-10-10 |
2019-12-31 | 2019-12-31 |
2050-12-31 | 2050-12-31 |
AAA | null |
/**
* 対象日付の月初日を取得
* @param mixed date1 対象日付
* @return string 対象日付の月初日
*/
_getMonthStartDate(date1){
if(date1 == null) return null;
if((typeof date1) == 'string'){
date1 = new Date(date1);
}
var year = date1.getFullYear();
var month = date1.getMonth() + 1;
var date_str = year + '-' + month + '-1';
return date_str;
}
/**
* 対象日付の月末日を取得する
* @param mixed date1 対象日付
* @return string 月末日(yyyy-mm-dd)
*/
_getMonthEndDate(date1){
if(date1 == null) return null;
if((typeof date1) == 'string'){
date1 = new Date(date1);
}
// 月末日の算出
var mEndDate = new Date(date1.getFullYear(), date1.getMonth() + 1, 0);
var year = mEndDate.getFullYear();
var month = mEndDate.getMonth() + 1;
var day = mEndDate.getDate();
// 2桁にそろえる。 例 3→03
var month = ("0"+month).slice(-2);
var day = ("0"+day).slice(-2);
var date_str = year + '-' + month + '-' + day;
return date_str;
}
/**
* 日付の引き算(日付の差分を求める)
* @note
* 日時形式も受け付けるが、時刻部分は無視される。
* @param mixed date1 対象日付1
* @param mixed date2 対象日付2
* @return int 差分日数
*/
function _subtractionDate(date1, date2) {
if(date1 == null || date1 == '') return null;
if(date2 == null || date2 == '') return null;
// 文字列型日付なら日付オブジェクトに変換する
if((typeof date1) == 'string') date1 = new Date(date1);
if((typeof date2) == 'string') date2 = new Date(date2);
// 差分をミリ秒で求める
var diff_ms = date1.getTime() - date2.getTime();
// 日数差分をミリ秒差分から算出
var diff_day = Math.floor(diff_ms / (1000 * 60 * 60 * 24)) + 1;
return diff_day;
}
/**
* yyyy-mm--dd型に変換する
*
* @note
* 例) 2012-2-3 → 2012-02-03
* 例) 2012-12-12 → 2012-12-12
*
* @param string date_str 日付文字列
* @param string delim 区切り文字(デフォルトはハイフン)
* @return yyyy-mm-dd型の日付文字列
*/
_yyyymmdd(date_str, delim){
if(date_str == null) return date_str;
date_str = date_str.trim();
if(date_str == '' || date_str == 0) return date_str;
if(delim == null) delim = '-';
let ary = date_str.split(delim);
if (ary.length != 3) return date_str;
let month = ary[1];
month = ("0"+month).slice(-2); // 2桁にそろえる。 例 3→03
let day = ary[2];
day = ("0"+day).slice(-2); // 2桁にそろえる。 例 3→03
let date_str2 = ary[0] + delim + month + delim + day;
return date_str2;
}
/**
* yyyy-mm型に変換する
*
* @note
* 例) 2012-2 → 2012-02
* 例) 2012-12 → 2012-12
*
* @param string ym 年月文字列
* @param string delim 区切り文字(デフォルトはハイフン)
* @return yyyy-mm型の年月文字列
*/
_yyyymm(ym, delim){
if(ym == null) return ym;
ym = ym.trim();
if(ym == '' || ym == 0) return ym;
if(delim == null) delim = '-';
let ary = ym.split(delim);
if (ary.length != 2) return ym;
let month = ary[1];
month = ("0"+month).slice(-2); // 2桁にそろえる。 例 3→03
let ym2 = ary[0] + delim + month;
return ym2;
}
<div id="kj_test_date" data-def="2012-2"></div>
JavaScript
$(()=>{
let rngYm = new RangeYm();
rngYm.init({
div_xid:'kj_test_date',
field:'kj_test_date',
wamei:'テスト日付',
});
});
<div id="kj_test_date" class="range_ym_ex" data-wamei="テスト日付" data-def-ym="2012-2" data-def1="2010-5-15" data-def2="2010-5-18"></div>
<div id="kj_neko_date" class="range_ym_ex" data-wamei="ネコ日付" data-def-ym="2019-8" data-def2="2010-5-17" ></div>
<div id="kj_tanuki_date" class="range_ym_ex" data-wamei="狸日付" data-def-ym="2019-12"></div>
<div id="kj_lion_date" class="range_ym_ex" data-wamei="ライオン日付" ></div>
<div id="kj_toki_date" class="range_ym_ex" data-wamei="トキ日付" data-def1="2010-5-5" data-def2="2010-5-18"></div>
JavaScript
let rngYmEx = new RangeYmEx();
rngYmEx.init();
RangeYmEx.js
/**
* 年月による日付範囲入力【拡張】 | RangeYmEx.js
*
* @note
* RangeYm.jsが必要。
*
* @date 2019-8-17
* @license MIT
* @version 1.0.0
*/
class RangeYmEx{
/**
* 初期化
*
*/
init(param){
let boxs = {};
jQuery('.range_ym_ex').each((i, elm)=>{
elm = jQuery(elm);
// 各種属性を取得
let xid = elm.attr('id');
let field=elm.attr('data-field');
let wamei = elm.attr('data-wamei');
if(field == null) field = xid;
// 「年月による日付範囲入力」オブジェクト
let rngYm = new RangeYm();
rngYm.init({
div_xid:elm,
field:field,
wamei:wamei,
});
let box = {
elm:elm,
field:field,
wamei:wamei,
rngYmObj:rngYm,
};
boxs[field] = box;
});
this.boxs = boxs;
}
}