Hier ist was ich tun muss.
Holen Sie sich das Datum, konvertieren Sie es in einen String und übergeben Sie es an ein Dienstprogramm eines Drittanbieters. Die Antwort der Bibliothek hat ein Datum im String-Format, wenn ich sie übergeben habe. So muss ich das Datum in eine Zeichenfolge wie 20110506105524 konvertieren (JJJJJMMDDHHMMSS)
function printDate() {
var temp = new Date();
var dateStr = temp.getFullYear().toString() +
temp.getMonth().toString() +
temp.getDate().toString() +
temp.getHours().toString() +
temp.getMinutes().toString() +
temp.getSeconds().toString();
debug (dateStr );
}
Das Problem bei obigem ist, dass es für die Monate 1 bis 9 eine Ziffer druckt. Wie kann ich es ändern, um genau 2 Ziffern für Monat, Datum zu drucken ...
Sie müssen mit "0" auffüllen, wenn es sich um eine einzelne Ziffer handelt. getMonth
gibt 0..11 und nicht 1..12 zurück
function printDate() {
var temp = new Date();
var dateStr = padStr(temp.getFullYear()) +
padStr(1 + temp.getMonth()) +
padStr(temp.getDate()) +
padStr(temp.getHours()) +
padStr(temp.getMinutes()) +
padStr(temp.getSeconds());
debug (dateStr );
}
function padStr(i) {
return (i < 10) ? "0" + i : "" + i;
}
Auf JQuery Datepicker vertrauen, aber es könnte leicht gemacht werden
var mydate = new Date();
$.datepicker.formatDate('yy-mm-dd', mydate);
verwenden Sie diese Polyfill https://github.com/UziTech/js-date-format
var d = new Date("1/1/2014 10:00 am");
d.format("DDDD 'the' DS 'of' MMMM YYYY h:mm TT");
//output: Wednesday the 1st of January 2014 10:00 AM
Mit regex und toJSON()
etwas einfacher.
var now = new Date();
var timeRegex = /^.*T(\d{2}):(\d{2}):(\d{2}).*$/
var dateRegex = /^(\d{4})-(\d{2})-(\d{2})T.*$/
var dateData = dateRegex.exec(now.toJSON());
var timeData = timeRegex.exec(now.toJSON());
var myFormat = dateData[1]+dateData[2]+dateData[3]+timeData[1]+timeData[2]+timeData[3]
Was zum Zeitpunkt des Schreibens Ihnen "20151111180924"
gibt.
Das Gute an toJSON()
ist, dass alles bereits gepolstert ist.
Möglicherweise ist es einfacher, das Datum in die tatsächliche Ganzzahl 20110506105524
zu konvertieren und diese dann in eine Zeichenfolge zu konvertieren:
function printDate() {
var temp = new Date();
var dateInt =
((((temp.getFullYear() * 100 +
temp.getMonth() + 1) * 100 +
temp.getDate()) * 100 +
temp.getHours()) * 100 +
temp.getMinutes()) * 100 +
temp.getSeconds();
debug ( '' + dateInt ); // convert to String
}
Bei temp.getFullYear() < 1000
ist das Ergebnis um eine (oder mehrere) Ziffern kürzer.
Achtung: Dies funktioniert nicht mit Millisekundengenauigkeit (d. H. 17 Stellen), da Number.MAX_SAFE_INTEGER 9007199254740991
ist und nur 16 Stellen hat.
Ich mag die Antwort von Daniel Cerecedo mit toJSON()
und Regex. Eine noch einfachere Form wäre:
var now = new Date();
var regex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).*$/;
var token_array = regex.exec(now.toJSON());
// [ "2017-10-31T02:24:45.868Z", "2017", "10", "31", "02", "24", "45" ]
var myFormat = token_array.slice(1).join('');
// "20171031022445"