現在日時表示マクロ
twitterで見かけたので。
マクロ本体
code:macro.ks
//現在時刻
var now = new Date()
//正規表現パターン
var pattarn = {
"E": function(){
return setDate.setEraName()
},
"yy": function(){
return setDate.setEraYear(2)
},
"y": function(){
return setDate.setEraYear(1)
},
"YYYY": function(){
return setDate.setYear(4)
},
"YY": function(){
return setDate.setYear(2)
},
"mmmm": function(){
return setDate.setMonth("mmmm")
},
"Mmmm": function(){
return setDate.setMonth("Mmmm")
},
"MMMM": function(){
return setDate.setMonth("MMMM")
},
"mmm": function(){
return setDate.setMonth("mmm")
},
"Mmm": function(){
return setDate.setMonth("Mmm")
},
"MMM": function(){
return setDate.setMonth("MMM")
},
"MM": function(){
return setDate.setMonth("MM")
},
"M": function(){
return setDate.setMonth("M")
},
"O": function(){
return setDate.setOMonth()
},
"DD": function(){
return setDate.setDate(2)
},
"D": function(){
return setDate.setDate(1)
},
"wwww": function(){
return setDate.setWeek("wwww")
},
"Wwww": function(){
return setDate.setWeek("Wwww")
},
"WWWW": function(){
return setDate.setWeek("WWWW")
},
"www": function(){
return setDate.setWeek("www")
},
"Www": function(){
return setDate.setWeek("Www")
},
"WWW": function(){
return setDate.setWeek("WWW")
},
"ww": function(){
return setDate.setWeek("ww")
},
"w": function(){
return setDate.setWeek("w")
},
"hh": function(){
return setDate.setHour("hh")
},
"h": function(){
return setDate.setHour("h")
},
"HH": function(){
return setDate.setHour("HH")
},
"H": function(){
return setDate.setHour("H")
},
"mm": function(){
return setDate.setMinuite(2)
},
"m": function(){
return setDate.setMinuite(1)
},
"ss": function(){
return setDate.setSecond(2)
},
"s": function(){
return setDate.setSecond(1)
},
"aa": function(){
return setDate.setNoon("aa")
},
"Aa": function(){
return setDate.setNoon("Aa")
},
"AA": function(){
return setDate.setNoon("AA")
},
"A": function(){
return setDate.setNoon("A")
},
}
//日付変換
var setDate = {
year: function(){
return now.getFullYear()
},
month: function(){
return now.getMonth()
},
date: function(){
return now.getDate()
},
weekday: function(){
return now.getDay()
},
hour: function(){
return now.getHours()
},
minute: function(){
return now.getMinutes()
},
second: function(){
return now.getSeconds()
},
shortMonth: "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec", longMonth: "January","February","March","April","May","June","July","August","September","October","November","December", oldMonth: "睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走", //0埋め
padding: function(str, len){
s = ""
if(str.length <= len){
s = ("00" + str.toString()).slice(-len)
}else{
s = str
}
return s
},
setEraName: function(){
return "平成"
},
setEraYear: function(len){
return this.padding(this.year() - 1988, len)
},
setYear: function(len){
return this.padding(this.year(), len)
},
setMonth: function(str){
var m = ""
var len = str.length
if(len <= 2){
m = this.padding(this.month(), len)
}else if(len === 3){
if(str === "mmm"){
m = m.toLowerCase()
}else if(str === "MMM"){
m = m.toUpperCase()
}
}else{
if(str === "mmmm"){
m = m.toLowerCase()
}else if(str === "MMMM"){
m = m.toUpperCase()
}
}
return m
},
setOMonth: function(){
},
setDate: function(len){
return this.padding(this.date(), len)
},
setWeek: function(str){
var w = ""
var len = str.length
if(len === 1){
}else if(len === 2){
}else if(len === 3){
if(str === "www"){
w = w.toLowerCase()
}else if(str === "WWW"){
w = w.toUpperCase()
}
}else{
if(str === "wwww"){
w = w.toLowerCase()
}else if(str === "WWWW"){
w = w.toUpperCase()
}
}
return w
},
setHour: function(str){
h = 0
if(this.hour() <= 12){
h = this.hour()
}else{
h = this.hour() - 12
}
}else{
h = this.hour()
}
return this.padding(h, str.length)
},
setMinuite: function(len){
return this.padding(this.minute(), len)
},
setSecond: function(len){
return this.padding(this.second(), len)
},
setNoon: function(str){
n = ""
h = ""
if(this.hour() <= 12){
h = "a"
}else{
h = "p"
}
if(str === "A"){
n = (h === "a" ? "午前" : "午後")
}else if(str === "aa"){
n = (h === "a" ? "am" : "pm")
}else if(str === "Aa"){
n = (h === "a" ? "Am" : "Pm")
}else{
n = (h === "a" ? "AM" : "PM")
}
return n
},
}
//日付書式を置換
var s = mp.format
Object.keys(pattarn).forEach(function(key){
var reg = new RegExp("%" + key + "%")
s = s.replace(reg, pattarnkey) })
f.displayDate = {
now: s
}
//指定された変数に代入
if(mp.emb !== undefined && mp.emb !== "" && mp.emb !== null){
f.displayDate.emb = mp.emb + "='" + f.displayDate.now + "'"
}else{
f.displayDate.emb = ""
}
this.kag.ftag.startTag("eval", {exp: f.displayDate.emb})
;表示/非表示
指定可能属性
format 表示書式を指定、各書式は%~%で囲ってください(大文字小文字を区別します) 例:%YYYY%/%MM%/%DD%(%w%) %hh%:%mm%:%ss% → 2018/12/27(木) 19:21:00
E 元号
y 1桁表記の元号年
yy 2桁表記の元号年
YY 2桁表記の西暦年
YYYY 4桁表記の西暦年
M 1桁表記の月
MM 2桁表記の月
mmm 短い英語表記の月 全て小文字(jan,feb...)
Mmm 短い英語表記の月 頭文字大文字(Jan,Feb...)
MMM 短い英語表記の月 全て大文字(JAN,FEB...)
mmmm 長い英語表記の月 全て小文字(january,february...)
Mmmm 長い英語表記の月 頭文字大文字(January,February...)
MMMM 長い英語表記の月 全て大文字(JANUARY,FEBRUARY...)
O 旧暦の月
D 1桁表記の日
DD 2桁表記の月
w 短い日本語表記の曜日(月、火…)
ww 長い日本語表記の曜日(月曜日、火曜日…)
www 短い英語表記の曜日 全て小文字(mon,tue...)
Www 短い英語表記の曜日 頭文字大文字(Mon,Tue...)
WWW 短い英語表記の曜日 全て大文字(MON,TUE...)
wwww 長い英語表記の曜日 全て小文字(monday,tuesday...)
Wwww 長い英語表記の曜日 頭文字大文字(Monday,Tuesday...)
WWWW 長い英語表記の曜日 全て大文字(MONDAY,TUESDAY...)
h 12時間表記の時間 1桁表記
hh 12時間表記の時間 2桁表記
H 24時間表記の時間 1桁表記
HH 24時間桁表記の時間 2桁表記
m 1桁表記の分
mm 2桁表記の分
s 1桁表記の秒
ss 2桁表記の秒
A 午前・午後
aa am/pm
Aa Am/Pm
AA AM/PM
emb ここで指定した変数に日時の値を代入
display true/falseを指定 trueを指定した場合、タグの位置に日時の値を表示 デフォルトはtrue
一口メモ
書式の中に空白を入れたい場合は[iscript]~[endscript]内で一時変数に値を代入してください
例:
code:sample.ks
tf.test = "%YYYY%/%mm%/%DD% (%w%) %hh%:%mm%:%ss%"
// ↑ここと↑ここに半角スペース
諸注意
基本的にはPCと同じ時間になるはずだけどPCの時刻設定が狂ってるとどうなるかわからん
旧暦は1月→睦月、2月→如月としているだけです 太陽暦からの変換はしていません
新元号への対応は覚えてたらやります
不具合があったらツイッターから報告お願いします