RustでタイムスタンプをDateTimeに変換する

寒くてストーブの前から動けない

use chrono::prelude::*;
use chrono::Utc;
use std::time::SystemTime;

fn main() {
    let s_time: SystemTime = chrono::FixedOffset::east(3600 * 9)
        .ymd(2019, 06, 05)
        .and_hms(00, 05, 12)
        .into();

    let timestamp = s_time
        .duration_since(SystemTime::UNIX_EPOCH)
        .unwrap()
        .as_secs() as i64;

    let naive = NaiveDateTime::from_timestamp(timestamp, 0);
    let datetime: DateTime<Utc> = DateTime::from_utc(naive, Utc);

    assert_eq!(
        datetime.format("%Y-%m-%d %T").to_string(),
        "2019-06-04 15:05:12"
    );
}

Rustで文字列を切り出す

strにはslice_uncheckedなるものがありますが、あまり推奨されないらしい。

そこで下記のように文字列スライスから取り出してみた。

let example = "hello my friend";
assert_eq!(&example[0..5], "hello");
assert_eq!(&example[6..8], "my");
assert_eq!(&example[9..15], "friend");

あと末尾を指定しないやり方もあるみたい

let example = "hello my friend";
assert_eq!(&example[6..], "my friend");

Rustでymdとand_hmsを利用してDateTimeを得る

年月日時分秒の数値からDateTimeを得ることができる。

use chrono::prelude::*;

fn main() {
    assert_eq!(
        Utc.ymd(2018, 1, 2).and_hms(3, 44, 55).to_string(),
        "2018-01-02 03:44:55 UTC"
    );
    assert_eq!(
        Local.ymd(2018, 1, 2).and_hms(3, 44, 55).to_string(),
        "2018-01-02 03:44:55 +09:00"
    );
}

Ubuntu 19.10のファイルマネージャで隠しファイルを表示する

ファイルマネージャー上で Ctrl+h キーを押すことで表示された。個人的にはLinuxならデフォルトで表示でも全く問題ないと思うが。

最近はローカルでファイルを扱うことはあんまりなくてGoogle Drive上のファイルをいじることばかり。ローカルのファイルを扱うのは開発時くらいなので、滅多にファイルマネージャーは起動しないから放置していたのだった。

Ubuntu 19.10でCapsLockをCtrlに変更する

普段HHKB使っているので設定不要だったが、ノートPCだったので必要だった。HHKB配列のノートPCはよ。。

gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']"

設定は再起動すると反映されます。