「日付と時刻を挿入」の版間の差分

提供:MeryWiki
ナビゲーションに移動 検索に移動
(isari版(12時間対応のフォーマット選択可)を追加)
(→‎N 版: #language = "JScript"の追加(年表記に問題があるため))
 
(2人の利用者による、間の3版が非表示)
1行目: 1行目:
== n 版 ==
== N 版 ==
メモ帳のF5キーの再現です。いまの時刻をカーソル位置に挿入します。
メモ帳のF5キーの再現です。いまの時刻をカーソル位置に挿入します。


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
#language = "JScript"
// 日付と時刻を挿入.js
// 日付と時刻を挿入.js
d = new Date
d = new Date
11行目: 12行目:
</syntaxhighlight>
</syntaxhighlight>


== masme 版 ==
== Masme 版 ==
書式設定(※下表参考)を元に現在日時を出力・挿入します。
書式設定(※下表参考)を元に現在日時を出力・挿入します。
{|class="wikitable"
{|class="wikitable"
70行目: 71行目:
</syntaxhighlight>
</syntaxhighlight>


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


134行目: 135行目:
})();
})();


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

2023年7月25日 (火) 11:22時点における最新版

N 版[編集]

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

#language = "JScript"
// 日付と時刻を挿入.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 版[編集]

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);
スポンサーリンク