Datumsformat in JSON zwischen Backend und Frontend

Was wäre das beste Format für ein Datum in JSON um es zwischen Backend und Frontend auszutauschen? Im Moment verwende ich Timestamps, dh. mein Spring-Boot Backend konvertiert jedes Datum in ein Timestamp was ich im Angular Frontend leicht wieder in ein Date-Objekt verwandeln kann. In umgekehrter Richtung funktioniert es auch problemlos. Gib es hier vielleicht noch andere (bessere) Möglichkeiten?

Alle Kommentare
javaguy Okt 18 (21:30)

Wie du schon gesagt hast, Timestamps finde ich am einfachsten zu implementieren. Zum Beispiel für ein Java DTO-Pojo (die Annotationen kommen von Lombok), das zu JSON serialisiert wird:

@Getter @Setter
public class FoobarDto  {

    private Long createdAt;
    // ... weitere Properties

    public FoobarDto(Foobar foobar) {
        this.createdAt = foobar.getCreatedAt().getTime();
    }
}

Und entsprechend ein TypeScript-Interface, das diese Klasse abbilden sollte:

export interface FooBar {
    createdAt?:number;
    // ... weitere Properties
}

Hier ist wichtig, dass der Timestamp "Long"-Objekt und nicht "long"-primitive ist, weil natürlich "0" (bzw. negative Werte) auch ein gültiges Timestamp ist und wir sonst nicht überprüfen können, ob die Property überhaupt gesetzt ist (deswegen auch das Fragezeichen im TypeScript).

Dann ist es recht einfach im Angular mit einer Pipe das Datum anzuzeigen:

@Pipe({ name: 'dateFormat' })
export class DefaultDateFormatPipe implements PipeTransform {

  transform(date: number): String {
   if (date) {
        const d = new Date(date);
        return `${d.getFullYear()}/${(d.getMonth() + 1)}/${d.getDate()}`;
    } else {
        return 'Kein Datum';
    }
  }
}
0 0 0
Noch keine Stimmen abgegeben
Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Außerdem werden teilweise auch Cookies von Diensten Dritter gesetzt. Genauere Informationen finden Sie in unserer Datenschutzerklärung sowie im Impressum.