无论如何,你最终都会做很多字符串操作,
那么为什么不直接操作日期字符串本身呢?
浏览器对日期字符串的格式不同。
Netscape ::: 2012 年 5 月 11 日星期五 20:15:49 GMT-0600(山地夏令时间)
IE ::: 2012 年 5 月 11 日星期五 20:17:33 MDT
所以你必须检查一下。
var D = new Date().toString().split(' ')[(document.all)?3:4];
这将设置 D 等于 24 小时 HH:MM:SS 字符串。将其拆分为
冒号,第一个元素是小时。
var H = new Date().toString().split(' ')[(document.all)?3:4].split(':')[0];
您可以将 24 小时制转换为 12 小时制,但这并没有
这里其实已经提到了。可能是因为它相当疯狂
当您转换小时数时,您实际上在数学上做什么
从时钟。事实上,你正在做的是添加 23,修改它
12,然后加 1
twelveHour = ((twentyfourHour+23)%12)+1;
因此,例如,您可以从日期字符串 mod 中获取整个时间
小时,并用新的时间显示所有这些。
var T = new Date().toString().split(' ')[(document.all)?3:4].split(':');
T[0] = (((T[0])+23)%12)+1;
alert(T.join(':'));
使用一些智能正则表达式,您可能可以减少 HH:MM:SS 的工作时间
日期字符串的一部分,并将它们全部修改在同一行中。这将是
一条荒谬的线,因为反向引用 $1 不能用于
无需将函数放入替换中即可计算。
如下所示:
var T = new Date().toString().split(' ')[(document.all)?3:4].replace(/(^\d\d)/,function(){return ((parseInt(RegExp.$1)+23)%12)+1} );
正如我所说,这很荒谬。如果您使用的是可以执行的库
反向引用的计算,该行变为:
var T = new Date().toString().split(' ')[(document.all)?3:4].replace(/(^\d\d)/, (($1+23)%12)+1);
如果你把它记录好的话,那作为可用的代码实际上并不是不可能的。
那行说:
创建一个日期字符串,在空格上分解,得到浏览器的合适部分,
并将第一个两位数替换为修改后的数字。
故事的重点是,将 24 小时制时间转换为 12 小时制时间的方法
是一个不明显的数学计算:
你加 23,mod by 12,然后再加一个。