2012-01-07 85 views
3

我有一个简单的片段,可以打印整天,一月,一天中的月份,小时和分钟。Javascript:用3个字母替换日期的全天名称和全月份名称。星期二>星期二

下面是代码: http://jsfiddle.net/raNms/

我想要更改

Monday > Mon 
Tuesday > Tue 
... 

和月:

January > Jan 
February > Feb 
... 

是否可以附加到身体前做了什么?我不想替换附加的文本,而是从一开始就正确地打印它。

中的JavaScript:

var now= new Date(), 
    ampm= 'am', 
    h= now.getHours(), 
    m= now.getMinutes(), 
    s= now.getSeconds(); 
    if(h>= 12){ 
     if(h>12)h-= 12; 
     ampm= 'pm'; 
    } 
    if(h<10) h= '0'+h; 
    if(m<10) m= '0'+m; 
    var time = now.toLocaleDateString()+' '+h+':'+m+' '+ampm 

    $('body').html(time); 
+0

把代码放在这里总是一个好主意,因为jsfiddle往往是不可靠的。我已编辑它。 – Pointy 2012-01-07 21:10:19

+0

jQuerybeast jquerey也是? – 2012-01-07 21:11:35

+0

你可能想看看[datejs](http://www.datejs。com)库,它有一个'toString()'方法,充当日期的模板系统。 – Pointy 2012-01-07 21:12:21

回答

1

只需补充一点:

var txt = now.toLocaleDateString().replace(/\b[a-z]+\b/gi,function($0){return $0.substring(0,3)}); 

代码:http://jsfiddle.net/raNms/1/

+0

发现这是我猜测的最简单的方法 – jQuerybeast 2012-01-07 21:25:22

1

这里做一个伟大的方式:http://www.webdevelopersnotes.com/tips/html/getting_current_time_using_javascript.php3

这里是你的代码是什么样子与变化:

输出:

Sat, Jan 7 2012 04:21 pm 

验证码:

var now= new Date(), 
    ampm= 'am', 
    h= now.getHours(), 
    m= now.getMinutes(), 
    s= now.getSeconds(); 
    if(h>= 12){ 
     if(h>12)h-= 12; 
     ampm= 'pm'; 
    } 
    if(h<10) h= '0'+h; 
    if(m<10) m= '0'+m; 


var weekdayNames = new Array("Sun", "Mon", "Tuey", 
"Wed", "Thu", "Fri", "Sat"); 

var monthNames = new Array("Jan", "Feb", "Mar", 
"Apr", "May", "Jun", "Jul", "Aug", "Sep", 
"Oct", "Nov", "Dec"); 

    //var dateString = now.toLocaleDateString(); 
    var weekday = weekdayNames[now.getDay()]; 
    var month = monthNames[now.getMonth()]; 
    var dateString = weekday + ', ' + month + ' ' + now.getDate() + ' ' + now.getFullYear(); 
    var time = dateString +' '+h+':'+m+' '+ampm 

    $('body').html(time); 

我还创建了一个的jsfiddle它http://jsfiddle.net/luisperezphd/raNms/2/

+0

谢谢。工作真的很棒,是多次使用它的好例子。在我的情况下,虽然它的一个lil脚本我会使用自己,因此我选择了Ivan的答案。 – jQuerybeast 2012-01-07 21:28:37

0

一个简单的方法:

var now= new Date(), 
    ampm= 'am', 
    h= now.getHours(), 
    m= now.getMinutes(), 
    s= now.getSeconds(); 
    if(h>= 12){ 
     if(h>12)h-= 12; 
     ampm= 'pm'; 
    } 
    if(h<10) h= '0'+h; 
    if(m<10) m= '0'+m; 
    t = now.toLocaleDateString(); 
    var time = t.split(',')[0].substring(0,3) + ', ' + 
       t.split(',')[1].substring(1,4) + ' ' + 
       t.split(',')[1].split(' ')[2] + 
       t.split(',')[2] + ', ' + 
       ' '+h+':'+m+' '+ampm 

    $('body').html(time); 

输出:

Sat, Jan 07 2012, 10:20 pm 
0

使用合适的库,如Globalize.js。处理类似事情的特殊代码需要更多的工作,往往不太可靠,并且在需要修改软件时意味着负担。

实施例:

Globalize.format(today,'ddd, MMM d, yyyy') + ' ' + Globalize.format(today,'T') 

可生产例如

Sat, Jan 7, 2012 11:32:21 PM 

您可以通过修改格式化字符串来调整外观。

请注意,toLocaleString由系统决定,所以它可能会生成任何语言的星期几名称(或根本不会)。以下是您的代码在我的环境中在一个浏览器中生成的内容: “7。 tammikuuta 2012 11:26 pm“。

相关问题