日付と時刻を挿入

提供:MeryWiki
2023年7月16日 (日) 11:34時点におけるIsari (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

n 版

メモ帳のF5キーの再現です。いまの時刻をカーソル位置に挿入します。

// 日付と時刻を挿入.js
d = new Date

document.selection.Text = d.getHours() + ':' + p(d.getMinutes()) + ' ' + [p(d.getYear()), p(d.getMonth() + 1), p(d.getDate())].join('/')

function p(x) { return x < 10 ? '0' + x : x }

masme 版

書式設定(※下表参考)を元に現在日時を出力・挿入します。

書式設定の例 出力結果の例
h:mm YYYY/MM/DD 4:05 2001/02/03
YYYY-MM-DD hh:mm:ss 2001-02-03 04:05:06
ddd, MMM D, YYYY Sat, Feb 3, 2001
YY年M月D日(d) h時m分s秒 01年2月3日(土) 4時5分6秒
hhmm 'hhmm' h'hm'm '' 0405 hhmm 4hm5 '

更新履歴

2016/02/28
  • 書式 d と ddd の内容を交換し、d を 日~土 出力、ddd を Sun~Sat 出力にした。
    • MMM が Jan~Dec 出力なので字数を揃えた。
  • アポストロフィー ' によるエスケープを導入。
2014/02/12
  • 初版公開。

ソースコード

//■日付と時刻
// 2014/02/12-2016/02/28

//■書式設定 ●初期値="h:mm YYYY/MM/DD"
var format = "h:mm YYYY/MM/DD";

var symbol = (function(){
  var t = new Date(), pad = function(n){return n<10? "0"+n : n};
  return {
  "YYYY":  (t.getFullYear()),
  "YY": pad(t.getFullYear()%100),
  "MMM": ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getMonth()],
  "MM": pad(t.getMonth()+1),
  "M":     (t.getMonth()+1),
  "DD": pad(t.getDate()),
  "D":     (t.getDate()),
  "ddd": ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][t.getDay()],
  "d":   ["日","月","火","水","木","金","土"][t.getDay()],
  "hh": pad(t.getHours()),
  "h":     (t.getHours()),
  "mm": pad(t.getMinutes()),
  "m":     (t.getMinutes()),
  "ss": pad(t.getSeconds()),
  "s":     (t.getSeconds())
  };
})();

var result = format.replace(/(')(.*?)\1|([YMDdhms])\3*/g,
  function($0,esc,ltr){return ltr || esc || symbol[$0] || $0;}
);
Document.Write(result);

isari 版(2023/07/16)

masmeさん版を、12時間表記に対応させポップアップメニューからフォーマットを選べるようにしたものです。複数の様式を使い分ける必要がある時にご利用ください。Mery2.6.6以降で動作します(以前の方はconstletを全てvarに置き換えてください)。

書式はmasmeさんの表に加え以下のように12時間を表す大文字の H/HH 、「午前/午後」どちらかに置き換えられる ampm が拡張されています。

書式設定の例 出力結果の例
ampmH時m分、'ampm'に行った。 午後3時7分、ampmに行った。
#title = "選択式日付と時刻"

// 2023/07/16
// 原版: masme 2014/02/12-2016/02/28

// 書式リスト。お好きな文字列に書き換え・追加してください。キーがポップアップメニューに表示されるラベル、値が書式のフォーマットです。
const formatDefinition = {"ISO 8601": "YYYY-MM-DDThh:mm:ss+09:00", "23年7月7日(金)午後3時7分": "YY年M月D日(d)ampmH時m分"};

// 書式選択
const menu = CreatePopupMenu();
const formatKeys = Object.keys(formatDefinition);
formatKeys.forEach(function(key, index) {
  menu.Add(key, index + 1);
});
menu.Add("キャンセル", 0);
// マウスポインタの位置にポップアップを表示したければTrack(mePosMouse)に
const selected = menu.Track(0);
let formatKey = "", format = "h:mm YYYY/MM/DD";
if (selected !== 0 && selected <= formatKeys.length){
  formatKey = formatKeys[selected - 1];
  format = formatDefinition[formatKey];
}else if (selected === 0){
  Quit();
}else{
  Alert("指定が正しくありません。");
  Quit();
}

const symbol = (function(){
  const t = new Date(), pad = function(n){return n<10? "0"+n : n};
  return {
  "YYYY":  (t.getFullYear()),
  "YY": pad(t.getFullYear()%100),
  "MMM": ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getMonth()],
  "MM": pad(t.getMonth()+1),
  "M":     (t.getMonth()+1),
  "DD": pad(t.getDate()),
  "D":     (t.getDate()),
  "ddd": ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][t.getDay()],
  "d":   ["日","月","火","水","木","金","土"][t.getDay()],
  "hh": pad(t.getHours()),
  "h":     (t.getHours()),
  "HH": pad(t.getHours()%12),
  "H":     (t.getHours()%12),
  "mm": pad(t.getMinutes()),
  "m":     (t.getMinutes()),
  "ss": pad(t.getSeconds()),
  "s":     (t.getSeconds()),
  "ampm":  (t.getHours() < 12 ? "午前" : "午後")
  };
})();

const result = format.replace(/(')(.*?)\1|ampm|([YMDdHhms])\3*/g,
  function($0,esc,ltr){return ltr || esc || symbol[$0] || $0;}
);
Document.Write(result);
スポンサーリンク