[TOC] > Sun May 23 2021 00:14:27 GMT+0800 (GMT+08:00) 关于 JavaScript 日期时间,其实有个很好用的 JavaScript 库——[Moment](https://momentjs.com/),只是 WPS WPS JS宏貌似不能引入,有精力的朋友可以改造改造做成 WPS JS 宏可用的 Module。 理论上是可以放进去的,只是我不会……感觉快瞒不住我是菜鸟这个事实了……你们还是会爱我的吧?宝儿…… ![](https://img.kancloud.cn/55/d5/55d5d482d785f47c6f4449e27837fcc4_711x907.png) ## JavaScript 日期时间 在日期时间、语言的国际化和本地化方面,并不是所有编程语言都会花精力做适配,主要是靠开源社区、现成语言标准以及第三方软件厂商补充。所以差异和缺漏还是存在的。 > 这里随便写点吧,具体可以查阅更详尽的专业文档。 > > * JavaScript 日期时间对象[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date) > * JavaScript 日期时间国际化格式化 [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) ```js function _m_showDate(){ let d = new Date() let r = Range("A1") function v2r(offset_r,offset_c,value){ r.Offset(offset_r,offset_c).Value2 = value; } let toShow_usually=[ "usually", d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds(), d.getDay() ] let toShow_UTC =["UTC", d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds(), d.getUTCDay() ] let toShow_To=[ "to……", d.toDateString(), d.toISOString(), d.toJSON(), d.toLocaleDateString(), d.toLocaleString(), d.toLocaleTimeString(), d.toSource, d.toString(), d.toTimeString(), d.toUTCString(), d.valueOf(), ] function intlDateTime(country,option,idate){ let intl = new Intl.DateTimeFormat(country,option).format(idate) return intl; } let usa = "en-US"; let cn = "zh-CN"; let baseDate = new Date(Date.UTC(2021,0,1,0,0,0,0)) function intl_month(country,opt){ let rs = [] for(let i=0;i<12;i++){ let foo = baseDate.setMonth(i); rs.push(intlDateTime(country,opt,new Date(foo))) } return rs; } function intl_Weekday(country,type){ let rs = [] let opts = {weekday:type} for(let i=1;i<15;i++){ let foo = baseDate.setDate(i); let t = new Date(foo) if(t.getDay()==0){ rs.push(intlDateTime(country,opts,t)) for(let z = 1;;z++){ if(z>6){ return rs } let bar = baseDate.setDate(i+z); rs.push(intlDateTime(country,opts,new Date(bar))) } } } return rs; } function loopEv(arr,col){ for(let i=0;i<arr.length;i++){ let arrItem = typeof(arr[i])=="object" ? JSON.stringify(arr[i]):arr[i]; v2r(i,col,arrItem) } } let us_month_long = intl_month('en-US',{"month":"long"}) let us_montn_short = intl_month('en-US',{"month":"short"}) let cn_month_long = intl_month('zh-CN',{"month":"long"}) let cn_month_short = intl_month('zh-CN',{"month":"short"}) let us_week_long = intl_Weekday('en-US',"long") let us_week_short = intl_Weekday('en-US',"short") let cn_week_long = intl_Weekday('zh-CN',"long") let cn_week_short = intl_Weekday('zh-CN',"short") loopEv(toShow_usually,0); loopEv(toShow_UTC,1); loopEv(toShow_To,2); loopEv(["月份英文",...us_month_long],3) loopEv(["月份大写",...cn_month_long],4) loopEv(["月份英文简写",...us_montn_short],5) loopEv(["月份中文大写",...cn_month_short],6) loopEv(["一周英文",...us_week_long],7) loopEv(["一周中文",...cn_week_long],8) loopEv(["一周英文简写",...us_week_short],9) loopEv(["一周中文简称",...cn_week_short],10) } ```