2017-10-25 11 views
0

nicht aktualisieren Ich verwende die Intl.DateTimeFormathttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat API, um das Datum und die Uhrzeit in einem Abschnitt einer Webseite zu formatieren, aber ich bin nicht in der Lage, die richtigen Stunden und Minuten zu erhalten. Gerade jetzt in meinem Land ist die Zeit 6:56pm und ich dies in der Web-Seite bekommen: 12:56pmIch kann die Stunden mit Intl.DateTimeFormat API

Dies ist, wie es aussieht, zur Zeit in der Seite:

<span id="date">Tuesday, October 24, 2017, 12:56 PM ET</span>

Und dies ist der Code, den ich haben dafür:

var bindEventsToUI = function() { 
    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth(); 
    var yyyy = today.getFullYear(); 
    var hours = today.getHours() 
    var minutes = today.getMinutes() 
    var $dateEl = $('#date'); 

    var date = new Date(Date.UTC(yyyy, mm, dd, hours, minutes)); 
    var options = { 
     hour12: true, 
     formatMatcher: 'best fit', 
     localeMatcher: 'lookup', 
     weekday: 'long', 
     year: 'numeric', 
     month: 'long', 
     hour: 'numeric', 
     minute: 'numeric', 
     day: 'numeric' 
    }; 

    var currentDate = new Intl.DateTimeFormat('en-US', options).format(date); 
    $dateEl.text(currentDate + ' ET'); 
}; 

ich auch diese hartkodierte bin platzieren, die 'ET' im .text(), Funktion: $dateEl.text(currentDate + ' ET');

Gibt es eine Möglichkeit, das automatisch einzustellen?

Alles scheint in Ordnung zu sein, nur die Zeit funktioniert nicht richtig, was mache ich falsch?

+0

Gibt es eine Möglichkeit, was automatisch einzustellen? – PHPglue

+0

@PHPlecken Sie dieses '$ dateEl.text (currentDate + 'ET');' das 'ET' ist hartkodiert, gibt es eine Möglichkeit, das programmatisch zu setzen? – NietzscheProgrammer

Antwort

1

Ich bin mir ziemlich sicher, dass Sie tun möchten:

Natürlich

//<![CDATA[ 
 
$.fn.extend({ 
 
    dateET:function(dateString){ 
 
    var dt = dateString ? new Date(dateString) : Date.now(); 
 
    var options = { 
 
     hour12:true, 
 
     formatMatcher:'best fit', 
 
     localeMatcher:'lookup', 
 
     weekday:'long', 
 
     year:'numeric', 
 
     month:'long', 
 
     hour:'numeric', 
 
     minute:'numeric', 
 
     day:'numeric' 
 
    } 
 
    var itd = new Intl.DateTimeFormat('en-US', options); 
 
    var et = itd.format(dt)+' ET'; 
 
    return this.each(function(){ 
 
     $(this).val(et).append(et); 
 
    }); 
 
    } 
 
}); 
 
$(function(){ 
 
    $('.output').dateET(); 
 
}); 
 
//]]>
/* external.css */ 
 
html,body{ 
 
    padding:0; margin:0; 
 
} 
 
body{ 
 
    background:#000; overflow-y:scroll; 
 
} 
 
.main{ 
 
    width:936px; background:#fff; padding:20px; margin:0 auto; 
 
} 
 
.output[type=text]{ 
 
    width:400px; 
 
}
<!DOCTYPE html> 
 
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
 
    <head> 
 
    <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
 
    <meta name='viewport' content='width=device-width' /> 
 
    <title>dateET</title> 
 
    <link type='text/css' rel='stylesheet' href='external.css' /> 
 
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script> 
 
    <script type='text/javascript' src='external.js'></script> 
 
    </head> 
 
    <body> 
 
    <div class='main'> 
 
     <div class='output'></div> 
 
     <input class='output' type='text' value='' /> 
 
     <div class='output'></div> 
 
    </div> 
 
    </body> 
 
</html>
, sollten Sie feststellen, dass gibt nur Sie das gewünschte Format. Es gibt mir immer noch die West Coast Zeit an der Westküste.

Verwandte Themen