工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

javascript自分用覚書


日時関連

日時便利関数集クラス

  • 指定した分だけ日時をシフトしたDateオブジェクトを作成
  • Dateオブジェクトからyyyy-mm-dd
  • その日時の0時0分0秒のDateオブジェクトを取得
class DateUtil {

    // 指定した分だけ日時をシフトしたDateオブジェクトを作成
    // dt: 元時刻(Dateオブジェクト)
    // days, hours, minutes, seconds: シフト量(integer)
    // return: 新時刻(Dateオブジェクト)
    static get_shifted_Date(dt, days=0, hours=0, minutes=0, seconds=0) {
        return new Date(dt.getTime() 
            + days * 1000 * 86400 
            + hours * 1000 * 3600 
            + minutes * 1000 * 60
            + seconds * 1000
        );
    }

    // 文字列(yyyy-mm-dd)
    // dt: Dateオブジェクト
    static date_to_yyyy_mm_dd(dt, delimiter="-") {
        var yyyy = dt.getFullYear();
        var mm = ("0" + (dt.getMonth() + 1)).slice(-2);
        var dd = ("0" + dt.getDate()).slice(-2);
        return yyyy + delimiter + mm + delimiter + dd;
    }

    // 0時0分0秒のDateオブジェクトを取得
    static get_daty_start(dt) {
        return new Date(Math.floor(dt.getTime() / (86400 * 1000)) * 86400 * 1000);
    }

}

Dateオブジェクト

Dateオブジェクト作成時にそのまま数値を足すと時刻がシフトするが、作成されたDateオブジェクトに数値をそのまま足してもシフトしない

// これは1日ずれたDateオブジェクトは取得できる
x = new Date() + 86400 * 1000; 

// これはDateオブジェクトにならない
x = new Date();
x = x + 86400 * 1000; 

// これは大丈夫
x = new Date();
x = new Date(x.getTime() + 86400 * 1000); 

UI関連

日時範囲を選択するUI

  • 各種ライブラリに依存せず(といってもjqueryには依存)
  • 日付が前後が逆転しないようにしてある
  • 日付を操作したときに発火するコールバックを設定可

↓ 描画イメージ

// 日付範囲UI
class DateRangeUI {

    static create(id, change, option={}) {
        /**
         * 作成
         * id: UIに与えるID, 開始には{id}-start, 終了には{id}-endと付く
         * change: 日付変化時コールバック(change(args)),
         * option = {
         *  start: 先頭の日付(Dateオブジェクト, 任意, 指定しなければ現在時刻),
         *  end: 終端の日付(Dateオブジェクト, 任意, 指定しなければ現在時刻),
         *  changeArgs: changeの引数(object, changeの引数args.dataとして取り出せる, 任意)
         * }
         * return: $("<div>")
         */

        if (!("start" in option)) option.start = new Date();
        if (!("end" in option)) option.end = new Date();
        if (!("changeArgs" in option)) option.changeArgs = undefined;

        // startが変わったとき
        function onchange_start(args) {
            // 逆転直す
            if (new Date($("#" + id + "-start").val())
                - new Date($("#" + id + "-end").val()) > 0) {
                $("#" + id + "-end").val($("#" + id + "-start").val());
            }
            change(args);
        }

        // toが変わったとき
        function onchange_to(args) {
            // 逆転直す
            if (new Date($("#" + id + "-start").val())
                - new Date($("#" + id + "-end").val()) > 0) {
                $("#" + id + "-start").val($("#" + id + "-end").val());
            }
            change(args);
        }

        return $("<div>").append(
            $("<span>").text("表示範囲"),
            $("<span>").css("margin-left", "10px").css("margin-right", "10px"),
            $("<span>").text("開始"),
            $("<span>").css("margin-right", "5px"),
            $("<input>").val(DateUtil.date_to_yyyy_mm_dd(option.start)).prop({
                "id": id + "-start",
                "type": "date",
                "name": "start"
            }).change(option.changeArgs, onchange_start),
            $("<span>").css("margin-left", "10px").css("margin-right", "10px"),
            $("<span>").text("終了"),
            $("<span>").css("margin-right", "5px"),
            $("<input>").val(DateUtil.date_to_yyyy_mm_dd(option.end)).prop({
                "id": id + "-end",
                "type": "date",
                "name": "end"
            }).change(option.changeArgs, onchange_to)
        ).css("margin", "10px").prop("id", id);

    }
}

玉ねぎ

概要

材料

  • 玉ねぎ 中1個
  • ベーコン 薄切り10cm×5cm 4枚
  • ニンニク 1片
  • かつお節 適量

調味料

  • 油 大さじ1
  • 塩 適量
  • 味の素 適量
  • こしょう 適量
  • 醤油 小さじ2
  • みりん 大さじ1
  • 酒 大さじ1
  • 水 大さじ2

作り方

カット

  • 玉ねぎを厚さ7,8mmの輪切りにする
  • ベーコンを幅7,8mmの短冊切りにする

フライパン調理

  • フライパンに油とにんにくを入れて温める
  • 玉ねぎを入れ、軽く塩を振って軽く焼き目がつくまで焼く
  • 反対側も同様
  • ベーコンを入れて軽く焼く
  • 他の調味料を入れて、水分がなくなってきたら火を止める

  • 最後に、鰹節をかけて完成

しそを育てる2022(1) 種まき

概要

しその種まきを行った。



背景と目的

昨年に引き続き、しそを育てたい。昨年は、ある程度育ったものの、反省点があるので、それを考慮して育てていく。まずは、種まきから。



詳細

1. プランターと土の用意

昨年と同じプランター、土を使用する。土は、ベビーリーフを育てた後放置していたので改めて肥料(昨年と同じもの、30g)と水をあげた。やってみてわかったことは、土が相当乾いていて、写真のようにちょっと水をあげたくらいではちょっと掘り返すと全然湿りきっていないことがわかった。

土の容量は、7~8Lだが水は1.5Lくらいあげて、よく混ぜてちゃんと水が行き渡った感じだ。


2. 種まき

今年使用する種は、サカタの青ちりめんしそ。

www.sakataseed.co.jp

プランターの中心付近に1cmほどの溝を掘り、種をばらまき、土をかぶせた。昨年、いちいち発芽率を計算して個数を決めたが、結局のところ日当たりや水やり、そのほか土など様々な状況が影響するので表示上の発芽率など全くあてにならないことがわかったため、今年は個数を機にせずばらまくことにした。なので、発芽自体は昨年より確実にするだろうから、間引きが必要になるだろう。

※種は全く見えない。

最後に、自動水やり器のホースをセッティングして満遍なく水やりできることを確認した。また、成長記録用のカメラも設置した。



まとめと今後の課題

しその種まきを行った。発芽まで待つ。