2017-02-09 147 views
1

我已经问了quesion How to hide time standards from javascript从24小时更改JS时间格式12小时

,但我需要改变时间格式12小时。

function display_c() { 
 
     var refresh = 1000; // Refresh rate in milli seconds 
 
     mytime = setTimeout('display_ct()', refresh) 
 
    } 
 

 
    function display_ct() { 
 
     var strcount 
 
     var x = new Date() 
 
     document.getElementById('ct').innerHTML = x.toString().replace(/GMT(.*)/g,""); 
 
     tt = display_c(); 
 
    } 
 
display_ct()
<span id='ct'></span>

+0

[momentjs](https://momentjs.com/) – Andreas

+1

[您如何在12小时上午/下午格式显示javascript日期时间?](http://stackoverflow.com/questions/8888491/how尚北道任您显示JavaScript的日期时间,在12小时的AM-PM格式) –

回答

2

匹配的hours用正则表达式模式/(\d+)(:)/和检查> 12然后应用条件。

Date methods

function display_c() { 
 
    var refresh = 1000; // Refresh rate in milli seconds 
 
    mytime = setTimeout('display_ct()', refresh) 
 
} 
 
var format; 
 

 
function display_ct() { 
 
    var strcount 
 
    var x = new Date() 
 
    document.getElementById('ct').innerHTML = x.toString().replace(/GMT(.*)/g, "").replace(/(\d+)(:)/, 
 
    function(a, b, c) { 
 
     b = parseInt(b); 
 
     if (b > 12) { 
 
     b = b - 12; 
 
     format ='PM'; 
 
     } 
 
    else{ 
 
     b=b; 
 
    format="AM"; 
 
     } 
 
     return b + c; 
 
    })+format; 
 
    tt = display_c(); 
 
} 
 
display_ct()
<span id='ct'></span>

或尝试用另一种模式

function display_c() { 
 
     var refresh = 1000; // Refresh rate in milli seconds 
 
     mytime = setTimeout('display_ct()', refresh) 
 
    } 
 
var m =['Jan','Feb','Mar','Aprl','May','Jun','July','Aug','Sep','Oct','Nov','Dec']; 
 
var w =['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
 

 
    function display_ct() { 
 
     var strcount 
 
     var x = new Date() 
 
     var h = x.getHours() > 12 ? x.getHours() -12 : x.getHours(); 
 
     var format = x.getHours() > 12 ? 'PM' : 'AM'; 
 
     document.getElementById('ct').innerHTML =w[x.getDay()]+' '+m[x.getMonth()]+' '+x.getFullYear()+' '+h+':'+x.getMinutes()+':'+x.getSeconds()+' '+format; 
 
     tt = display_c(); 
 
    } 
 
display_ct()
<span id='ct'></span>

+0

喜@prasad编辑...它可以添加AM,PM? – Vishnu

+0

哪一个更好的选择 - 正则表达式或数组? – Vishnu

+0

用正则表达式模式简单的显示出来使用。如果需要应用一些动作使用阵列模式。因为它得到'日期,时间秒,月,年'的个人数据 – prasanth

1

你可以做,使用momentjs字符串格式。使用这个,你可以按你喜欢的方式显示日期。

在下面的代码段,你可以看到如何实现相同的功能。

function display_c() { 
 
    var refresh = 1000; // Refresh rate in milli seconds 
 
    mytime = setTimeout('display_ct()', refresh) 
 
} 
 

 
function display_ct() { 
 
    var strcount 
 
    var x = new Date() 
 
    document.getElementById('ct').innerHTML = moment(x).format('ddd MMM DD gggg hh:mm:ss'); 
 
    tt = display_c(); 
 
} 
 

 
display_ct()
<script src="http://momentjs.com/downloads/moment.js"></script> 
 
<span id='ct'></span>

注:

  1. hh12小时format,你可以找到更多的格式accesing的文件(你可以看到一些我以前在我的例子)。

  2. 关于这样做的好处是,除去使用replace的需要。

  3. 而且也沿用了KISS principle

+0

谢谢,这是非常有用的..但无需任何外部JS。只希望用相同的代码 – Vishnu