我已经做了尽职调查,但尚未取得任何成功.使用JavaScript相当绿色我正在寻求一些帮助.我想要显示日期
NOV2012<br>
2<sup>nd</sup><br>
5:00 PM
Run Code Online (Sandbox Code Playgroud)
我有一切工作(不是我的脚本),除了能够得到日期后缀更改为st,nd,rd或th视具体情况而定.
这就是我所拥有的:
<pre> <abbr title="Month">
<script type="text/javascript">
var d=new Date();
var month=new Array(12);
month[0]="Jan";
month[1]="Feb";
month[2]="Mar";
month[3]="Apr";
month[4]="May";
month[5]="Jun";
month[6]="Jul";
month[7]="Aug";
month[8]="Sep";
month[9]="Oct";
month[10]="Nov";
month[11]="Dec";
document.write(month[d.getMonth()]);
</script></abbr>
<script type="text/javascript">
var d = new Date()
document.write(d.getDate())
ordinal : function (number) {
var d = number % 10;
return (~~ (number % 100 / 10) === 1) ? 'th' :
(d === 1) ? 'st' :
(d === 2) ? 'nd' :
(d === 3) ? 'rd' : 'th';
}
});
</script>
<sup>%</sup>
<abbr><script type="text/javascript">
var d = new Date()
document.write(d.getFullYear())
</script></abbr>
<sub>
<script type="text/javascript">
<!--
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
if (minutes < 10){
minutes = "0" + minutes
}
document.write(hours + ":" + minutes + " ")
if(hours > 11){
document.write("PM")
} else {
document.write("AM")
}
//-->
</script>
</sub>
</pre>
Run Code Online (Sandbox Code Playgroud)
我知道问题出在这个部分:
<pre>
<script type="text/javascript">
var d = new Date()
document.write(d.getDate())
ordinal : function (number) {
var d = number % 10;
return (~~ (number % 100 / 10) === 1) ? 'th' :
(d === 1) ? 'st' :
(d === 2) ? 'nd' :
(d === 3) ? 'rd' : 'th';
}
});
</script>
< sup > % < /sup >
</pre>
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到正确的解决办法.这就是它所在的位置:
http://www.bcreativeservices.com/
一如既往地谢谢你.
乙
Chr*_*all 13
首先,您有一个语法错误分配序号.它看起来像你最初试图使包含键顺序的对象,但后来改变了它.
这可能是你想要的:
function ordinal(number) {
var d = number % 10;
return (~~ (number % 100 / 10) === 1) ? 'th' :
(d === 1) ? 'st' :
(d === 2) ? 'nd' :
(d === 3) ? 'rd' : 'th';
}
Run Code Online (Sandbox Code Playgroud)
哪个有效,但双按位NOT ~~会使您的代码难以理解.我不得不去查看它是什么(我从不使用按位数学)我会建议你不要使用它(当然,除非你有充分的理由使用它).
根据关于这个问题的这个问题,你确实可以提高速度.但是,这些操作只需几微秒,因此改进几乎可以忽略不计,只会使您的代码更难理解.
不久前,我写了一个函数来为日期提供这些后缀.稍作修改后(我将其添加到Date原型中),你会得到:
function ordinal(date) {
return (date > 20 || date < 10) ? ([false, "st", "nd", "rd"])[(date%10)] || "th" : "th";
}
Run Code Online (Sandbox Code Playgroud)
适用于任何有效日期.
编辑:我发现我的序数函数版本可能是不可能阅读的.为了理智,这里是一个具有相同逻辑的不那么简洁的版本:
function ordinal(date) {
if(date > 20 || date < 10) {
switch(date%10) {
case 1:
return "st";
case 2:
return "nd";
case 3:
return "rd";
}
}
return "th";
}
Run Code Online (Sandbox Code Playgroud)