VBAのFormat関数の日時部分をJavaScriptで再現

VBAにはFormat関数があり日時や数値を整形します。
これをJavaScriptで再現してみました。なお全部ではなく日時部分だけです。
「date_format(日付オブジェクト,フォーマット)」のようにして使います。
例えばフォーマットを「yyyymmdd」とすると「20160118」に変換します。 (さらに…)

GoogleスプレッドシートとGoogle Apps Scriptの日付

GoogleスプレッドシートからGoogleカレンダーにインポート」を書いたのですが、今回、こんな質問をいただきました。
「開始時刻を設定し、終了時刻は自動的にその1時間後にする方法はないか」
そこでGoogle Apps Scriptで日時がどのように扱われているか、調べてみました。 (さらに…)

日付を判定する正規表現

日付を8桁の数列で表示するケースがあります。2015年2月5日ならば「20150205」とするような場合です。
逆に8桁の数列が日付かどうか判定する方法を考えます。
JavaScriptの正規表現を使います。 (さらに…)

iPhoneで「きょう」と入力すると?

今年は平成27年、西暦2015年です。年始は年を間違えがちです。
メールなどで間違えると恥ずかしいです。

iPhoneの場合、間違えずに済む方法があります(iOS8.1.2)。
「きょう」と入力すると次の通り変換候補が現れます。
「1/9」「2015/01/09」「1月9日(金)」「2015年1月9日」「平成27年1月9日」「金曜日」 (さらに…)

PHPのタイムスタンプとMySQLの日時を相互に変換

PHPは日時をタイムスタンプで管理しています。これは1970年1月1日からの通算秒数です。
MySQLで日時(datetime型)を扱う場合は「2014-01-02 03:04:05」のようにします。
これらについては相互に変換することが多いので次の通りまとめておきます。

function datetime2timestamp($datetime){
  //PHPのタイムスタンプをMySQLのdatetime型に変換。
  $re = "/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/";
  if(preg_match($re, $datetime, $m)){
    return mktime($m[4], $m[5], $m[6], $m[2], $m[3], $m[1]);
  }
}
function timestamp2datetime($timestamp){
  //MySQLのdatetime型をPHPのタイムスタンプに変換。
  return date("Y-m-d H:i:s", $timestamp);
}

JavaScriptで節分の日を調べる

節分は毎年2月3日です。しかし昔は2月4日の年もあったような気がします。
調べてみると1952年から1984年までは閏年は2月4日が節分でした。若い人はこの事実を知らないでしょう。

ウィキペディアに節分が何日かを求める表が載っていたので、JavaScriptで関数を書いてみました。
西暦年を与えると2月の何日かを返します。1901年から2100年まで対応しています。

function setsubun(nen) {
    var errorMessage = "年が範囲外です。";
    if(nen < 1901) {
        throw new Error(errorMessage);
    } else if(nen < 1915) {
        return(nen - 1) % 4 < 1 ? 3 : 4;
    } else if(nen < 1952) {
        return(nen - 1) % 4 < 2 ? 3 : 4;
    } else if(nen < 1985) {
        return(nen - 1) % 4 < 3 ? 3 : 4;
    } else if(nen < 2022) {
        return 3;
    } else if(nen < 2055) {
        return(nen - 1) % 4 < 1 ? 2 : 3;
    } else if(nen < 2088) {
        return(nen - 1) % 4 < 2 ? 2 : 3;
    } else if(nen < 2101) {
        return(nen - 1) % 4 < 3 ? 2 : 3;
    } else {
        throw new Error(errorMessage);
    }
}

JavaScriptで休日を判定する関数

「国民の祝日に関する法律」があり、日本の祝日、休日について定められています。
JavaScriptで休日、すなわち祝日と日曜日と振替休日を判定する関数を作りました。
前にJavaScriptで祝日を判定する関数で紹介したgetNationalHolidayが必要です。
今回紹介するgetHolidayはgetNationalHolidayで取得した祝日と日曜日の関係から振替休日を判定しています。 (さらに…)

JavaScriptで祝日を判定する関数

2007年以降の日本の国民の祝日を判定する関数を作りました。その日が祝日であればその名称、祝日でなければ空文字を返します。
2016年から実施の「山の日」にも対応しています。 (さらに…)

JavaScriptの日付オブジェクトは日本時間で入力すると標準時でセットされる

日付オブジェクトの設定(Dateインスタンスの生成)について調べてみました。前にも似たような記事を書いたことがありますがよく理解できていません。

年月日を入力

まず年月日、時分秒を入力する方法です。
「1970年1月1日0時0分0秒」をnew Date()に入力します。
getTime()で1970年1月1日0時0分0秒からの経過ミリ秒を取得できます。

指定された日時を協定世界時(UTC) の 1970 年 1 月 1 日 00:00:00 からのミリ秒単位の数値で返す

var dateobj = new Date(1970,0,1,0,0,0);
document.write(dateobj);
document.write(dateobj.getTime());

ポイントは、年月日、時分秒を日本時間で入力すると、日付オブジェクトは標準時(協定世界時)でセットされるところです。
実行結果は次の通りですが、経過ミリ秒は「-32400000」となります。つまり日本時間で午前0時、0ミリ秒なので、標準時では9時間前の「-32400000」ミリ秒となります。

Thu Jan 1 00:00:00 UTC+0900 1970
-32400000

次に経過ミリ秒を入力する方法です。
「0」ををnew Date()に入力します。

var dateobj = new Date(0);
document.write(dateobj);
document.write(dateobj.getTime());

この場合は、入力も日付オブジェクトも標準時になります。
次の通り、「0」で入力したら「0」で出力されます。

Thu Jan 1 09:00:00 UTC+0900 1970
0

例えば、経過時間を計算するときは、起点、終点を同じ基準で入力することに注意します。

JavaScriptでDateオブジェクトにメソッドを追加

date.prototype.xyz

JavaScriptで日付を操作する関数を作っているのですが、これをメソッドとして追加できないか、調べてみました。
サンプルを3個、紹介しています。
いずれも「var dateObj = new Date(2012, 1, 15);」に対してメソッドを適用しています。これは「2012年2月15日」になります。閏年の2月であることに注意してください。サンプル2とサンプル3はこの行を省略しています。 (さらに…)

古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報