So stellen Sie eine DateTime in Excel dar

77

Was ist die beste Art, ein DateTimein Excel darzustellen ? Wir verwenden Syncfusions Essential XlsIO, um Werte in ein Excel-Dokument auszugeben, das hervorragend funktioniert. Aber ich kann nicht herausfinden, wie man ein DateTimein einer Spalte anzeigt . Nicht, wenn ich es selbst direkt in Excel mache. Es ist unmöglich? Muss ich eine separate Datums- und Zeitspalte verwenden? Ich wünschte wirklich, ich hätte es nicht getan, weil es eine Art Pausen beim Sortieren usw. gibt ... es sei denn, Excel hat etwas Kluges, um das zu beheben ...

Svish
quelle

Antworten:

83

Der zugrunde liegende Datentyp einer Datums- / Uhrzeitangabe in Excel ist eine 64-Bit-Gleitkommazahl, bei der die Länge eines Tages gleich 1 und der 1. Januar 1900 00:00 gleich 1 ist. Der 11. Juni 2009, 17:30 Uhr, beträgt also ungefähr 39975,72917.

Wenn eine Zelle einen solchen numerischen Wert enthält, kann sie einfach durch Anwenden eines Datums- / Uhrzeitformats auf die Zelle in eine Datums- / Uhrzeitangabe konvertiert werden.

Wenn Sie also Ihre Datumszeiten mit der obigen Formel in Zahlen konvertieren können, geben Sie sie in die entsprechenden Zellen aus und stellen Sie die Zellenformate auf das entsprechende Datums- / Uhrzeitformat ein, z. B. JJJJ-MM-TT HH: MM: SS, dann sollte dies möglich sein zu erreichen, was Sie wollen.

Auch Stefan de Bruijn hat darauf hingewiesen, dass es einen Fehler in Excel gibt, der fälschlicherweise davon ausgeht, dass 1900 ein Schaltjahr ist. Sie müssen dies bei Ihren Berechnungen berücksichtigen ( Wikipedia ).

Adam Ralph
quelle
10
Leider ist das nicht korrekt. Wenn Zelle A2 = 1-1-1900 ist und Sie Wert (A2) ausführen, erhalten Sie '1'. Außerdem geht Excel fälschlicherweise davon aus, dass 1900 ein Schaltjahr ist (in allen Berechnungen). Mit anderen Worten, Sie müssen wahrscheinlich 2 Tage abziehen, um das richtige Datum zu erhalten, wenn Sie in Ihrer bevorzugten Programmiersprache arbeiten ...
atlaste
Danke Stefan de Bruijn, ich habe die Antwort korrigiert und einen Hinweis zum Schaltjahr-Fehler hinzugefügt.
Adam Ralph
3
Seien Sie vorsichtig, das Datum / Uhrzeit-Format hängt von der Excel-Sprache ab. Zum Beispiel sollte auf Spanisch sein: aaaa-mm-dd hh: mm
Daniel Argüelles
62

Wenn Sie wie ich im Formatdialog keine Datums- und Uhrzeitangabe unter Datum oder Uhrzeit finden, sollten Sie sie unter "Benutzerdefiniert" finden können.

Ich habe gerade 'TT / MM / JJJJ HH: MM' von 'Benutzerdefiniert' ausgewählt und bin mit den Ergebnissen zufrieden.

Ian Grainger
quelle
Das obige scheint nicht für Excel für Mac zu funktionieren :(
Brantley Beaird
1
@BrantleyBeaird Ich habe keinen Mac, aber können Sie nicht 'TT / MM / JJJJ HH: MM' in die benutzerdefinierte Zeichenfolge eingeben? Screenshot: imgur.com/a/51ipd
Ian Grainger
1
Ich habe das getan und dann ": ss" hinzugefügt, um Sekunden einzuschließen.
James in Indy
25

Sie können Folgendes tun:

=Datevalue(text)+timevalue(text) .

Gehen Sie in verschiedene Datumsformate und wählen Sie:

dd-mm-yyyy mm:ss am/pm .

Naveen
quelle
2
Warum müssen Sie Datumswert (Text) + Zeitwert (Text) ausführen? Stellen Sie einfach die Formatierung in der Zelle ein.
Ian Grainger
11

In einigen Excel-Versionen sind in den Standardauswahllisten keine Datums- und Uhrzeitformate verfügbar. Sie können jedoch einfach eine benutzerdefinierte Formatzeichenfolge eingeben, z. B. JJJJ-MM-TT HH: MM: SS von:

  1. Rechtsklick -> Zellen formatieren
  2. Registerkarte Nummer
  3. Wählen Sie Kategorie Benutzerdefiniert
  4. Geben Sie Ihre benutzerdefinierte Formatzeichenfolge in das Feld "Typ" ein

Dies funktioniert in meinem Excel 2010

Glenn Lawrence
quelle
Ich hatte das bereits in einer Antwort gesagt - stackoverflow.com/a/15552944/48348 ...
Ian Grainger
2

Excel kann einen Datumstyp ähnlich wie eine DateTime anzeigen. Rechtsklick auf die betroffene Zelle, wählen Sie Zellen formatieren , dann unter Kategorie auswählen Datum und unter Typ wählen Sie die Art , dass in etwa so aussieht:

3/14/01 1:30 PM

Das sollte tun, was Sie angefordert haben. Ich habe das Sortieren einiger Beispieldaten mit diesem Format getestet und es schien gut zu funktionieren.

Matthew Jones
quelle
Das ist tatsächlich wahr ... wissen Sie, ob es möglich ist, dies kulturspezifisch von C # aus festzulegen? Funktioniert das Standard DateTime Format Strings von .NET in Excel?
Svish
Wenn die Daten als Zeichenfolge aus .NET nach Excel exportiert werden und in meinem Beispiel ähnlich aussehen, sollte dies beim Formatieren der Zellen funktionieren. In Bezug auf die Kulturspezifität (?) Gibt es eine Vielzahl von benutzerdefinierten Formaten (dh Kategorie ist in Excel Benutzerdefiniert), die möglicherweise das bieten, wonach Sie suchen.
Matthew Jones
7
Die Version von Excel, die ich habe (2003), hat keine
David Sykes
5
Auch meine Kopie von 2010
KingCronus
Wenn Ihre Excel-Version kein Standardformat für Datum und Uhrzeit enthält, können Sie es als benutzerdefiniertes Feld eingeben, wie in meiner Antwort unten erläutert.
Glenn Lawrence
1

Excel erwartet, dass Datum und Uhrzeit als Gleitkommazahl gespeichert werden, deren Wert von der Einstellung Date1904 in der Arbeitsmappe abhängt, sowie ein Zahlenformat wie "mm / tt / jjjj" oder "hh: mm: ss" oder "mm / tt" / yyyy hh: mm: ss ", damit die Nummer dem Benutzer als Datum / Uhrzeit angezeigt wird.

Mit SpreadsheetGear für .NET können Sie Folgendes tun: worksheet.Cells ["A1"]. Value = DateTime.Now;

Dadurch wird die DateTime in ein Double konvertiert, das der zugrunde liegende Typ ist, den Excel für ein Datum / eine Uhrzeit verwendet, und die Zelle wird dann abhängig vom Wert automatisch mit einem Standardformat für Datums- und / oder Zeitnummern formatiert.

SpreadsheetGear verfügt außerdem über die Methoden IWorkbook.DateTimeToNumber (DateTime) und NumberToDateTime (double), die von .NET DateTime-Objekten in ein Double konvertieren, das Excel verwenden kann.

Ich würde erwarten, dass XlsIO etwas Ähnliches hat.

Haftungsausschluss: Ich besitze SpreadsheetGear LLC

Joe Erickson
quelle
1

Mit einer dieser Optionen können Sie Datums- und Uhrzeitwerte für eine Zelle in XlsIO festlegen

sheet.Range["A1"].Value2 = DateTime.Now;
sheet.Range["A1"].NumberFormat = "dd/mm/yyyy";

sheet.Range["A2"].DateTime = DateTime.Now;
sheet.Range["A2"].NumberFormat = "[$-409]d-mmm-yy;@";

Weitere Informationen finden Sie hier .

Tshilidzi Mudau
quelle
Der Link ist (für die neuesten Dokumente) help.syncfusion.com/ug_94/Reporting/XlsIO/ASP.NET/…
Thomas Lundström
-2

TT-MM-JJJJ HH: MM: SS.000 Universell sortierbares Datums- / Zeitmuster

GLeb
quelle
7
Meinst du wirklich yyyy-mm-dd hh:mm:ss.000? Es gibt auch ein ISO8601-Format, das ähnlich ist: YYYY-MM-DDThh:mm:ssTZD(Die Einschränkungen dieser sind zwar sortierbar, aber immer noch Zeichenfolgen, sodass Sie keine Excel-
Datumsfunktionen
Ja, Sie haben Recht, und mit großgeschriebenem HH bis 24-Stunden-Format. JJJJ-MM-TT HH: MM: SS.000
GLeb
2
Abgestimmt, weil ich nicht denke, dass dies als Antwort sehr vollständig oder richtig ist, sorry.
Ian Grainger
1
Dies ist nicht sortierbar oder universell. Sie müssen das Jahr für beide an die erste Stelle setzen.
JasonWoof