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?

Noch keine Stimmen abgegeben
Noch keine Kommentare
  • 18 Okt. 2019

    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';
        }
      }
    }
    
    Noch keine Stimmen abgegeben
    Noch keine Kommentare