2016-11-24 2 views
0

Ich verwende ein Google Form, um Daten von Benutzern zu sammeln, sie verwenden einen Datumsauswahl. Das Format ist US mit MM/TT/JJ (1/25/2016), aber ich brauche EU Format TT/MM/JJ (25/1/2016).Datumsformat von MM/TT/JJ in TT/MM/JJ ändern

Das Skript sammelt Serval Daten:

var Date1 = e.values[24]; 
    var Date2 = e.values[25]; 
    var Date3 = e.values[26]; 
    var Date4 = e.values[27]; 
    var Date5 = e.values[28]; 

Wie kann ich konvertieren diese EU date?

Dies ist, was iv'e versucht, bisher ohne Erfolg:

1)

function myFunction() { 
     var preDate = "1/25/2016"; 
     var postDate = preDate.Utilities.formatDate(dt, "PST", "dd/mm/yy"); 
     Logger.log(postDate); 
    } 

Fehler: Typeerror: Die Methode kann nicht "format" undefinierter nennen.

2)

function myFunction() { 
    var preDate = "1/25/2016"; 
    var postDate = Date.parseExact(preDate ,"dd/MM/yyyy") 
    Logger.log(postDate); 
} 

Fehler: Typeerror: Kann nicht funktionieren ParseExact in Objektfunktion Date() {[native Code für Date.Date, arity = 1]}

+0

Was ist "EU" Format? d/m/y wird nicht nur in Ländern, die der EU angehören, sehr häufig verwendet. – RobG

Antwort

2

Wenn Sie die Daten in einer Google-Tabelle haben, können Sie die Utilities.formatDate Methode können Daten in ein anderes Format konvertieren.

function convertDate() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var source = sheet.getRange("A1").getValue(); 
    if (typeof source === "date") { 
    sheet.getRange("B1").setValue(Utilities.formatDate(dt, "PST", "dd/mm/yy")); 
    } 
} 

Eine einfachere Möglichkeit wäre, dass Sie die gesamte Spalte in der Tabelle und die Änderung das Standardformat unter dem Menü Format (siehe Screenshot) wählen.

Change Date Format in Spreadsheet

+0

Ja, aber das Skript ruft aus verschiedenen Gründen die Formularwerte und nicht die Werte in der Tabelle ab. Wie Sie in meinem Beispiel sehen können "e.values ​​[26];" = form Werte. –

+0

Die gleiche Funktion kann geändert werden: if (typeof e.values ​​[26] === "date") { Rückgabe Utilities.formatDate (e [26], "PST", "TT/MM/JJ")) ; } –

+0

Versucht, dass ich 'undefined' im Logger. –

1

Sie finden verwenden DateJS dafür, wie folgt aus:

http://code.google.com/p/datejs/wiki/APIDocumentation#parseExact

Date.parseExact("10/15/2004", "M/d/yyyy"); // The Date of 15-Oct-2004 
Date.parse("15-Oct-2004", "d-MMM-yyyy"); // The Date of 15-Oct-2004 
Date.parse("2004.10.15", "yyyy.MM.dd");  // The Date of 15-Oct-2004 
Date.parseExact("10/15/2004", ["M/d/yyyy", "MMMM d, yyyy"]); // The Date of 15-Oct-2004 

In Ihrer Frage, die Sie brauchen, dass:

Date.parseExact("dateyouneed" ,"dd/MM/yyyy") 
+0

Ich versuche dies ohne Erfolg Funktion myFunction() { var Date = "1/25/2016"; var newDate = Datum.Utilities.formatDate (dt, "PST", "TT/MM/JJ"); Logger.log (neuesDatum); } –

+0

Wenn eine Zeichenkette neu formatiert werden soll, dann ist kein Date-Objekt (oder Parser) erforderlich, siehe [* Javascript Format Datum von Zeichenkette zu Datum Format *] (http: // stackoverflow.com/questions/23308877/javascript-format-date-from-string-to-date-format). – RobG