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';
}
}
}