如何在网页中显示用户年龄

我有一个用Java编写的后端和一个用Angular编写的前端。我假装显示用户进行数学运算的年龄(实际日期-出生日期),但我找不到解决方法。

我尝试了这两个选项:

1.-前端:我进行数学运算并得到结果。问题在于类型看起来不一样。如果同时打印这两个结果:

  • 生日日期:“ 1996-07-24T00:00:00.000 + 0000”(我是从API那里获得的)
  • actualDate:“ 2020年7月11日星期六格林尼治标准时间+0200(中欧夏令时)”(我让它做为约会:日期=新日期;)

当我将任何函数与生日一起使用时,出现错误。例如getTime()以毫秒为单位获取它。这两个变量都存储在Date类型变量中。 错误看起来像这样:

ERROR TypeError: user.birthDate.getTime is not a function
    at SafeSubscriber._next (user-list.component.ts:47)
    at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
    at SafeSubscriber.next (Subscriber.js:122)
    at Subscriber._next (Subscriber.js:72)
    at Subscriber.next (Subscriber.js:49)
    at MapSubscriber._next (map.js:35)
    at MapSubscriber.next (Subscriber.js:49)
    at FilterSubscriber._next (filter.js:33)
    at FilterSubscriber.next (Subscriber.js:49)
    at MergeMapSubscriber.notifyNext (mergeMap.js:72)

2。-后端。我在类中添加了一个新属性,并将其命名为Age。我不想将其存储在数据库中,我只想对其进行计算并将其提供给前端。这样,看起来Java尝试共享这个新属性,但是它不在数据库中,因为我不想存储它。我以为如果不在属性上方添加@Column,它将不会连接到数据库中的列,但看起来不起作用。

有什么想法吗?我接受这两种方法中的任何一种。

谢谢

iCMS 回答:如何在网页中显示用户年龄

我不知道棱角。我在下面回答了如何使用后端(您的Option-2 ):

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        String strBirthDay = "1996-07-24T00:00:00.000+0000";

        // Define formatter
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

        // Define time-zone
        ZoneId zone = ZoneId.of("Etc/UTC");

        // Get dates
        ZonedDateTime birthDay = LocalDateTime.parse(strBirthDay,formatter).atZone(zone);
        ZonedDateTime zdtNow = ZonedDateTime.now(zone);

        // Calculate years between dates
        long years = ChronoUnit.YEARS.between(birthDay,zdtNow);

        // Calculate months part
        ZonedDateTime forward = birthDay.plusYears(years);
        long months = ChronoUnit.MONTHS.between(forward,zdtNow);

        // Calculate days part
        forward = forward.plusMonths(months);
        long days = ChronoUnit.DAYS.between(forward,zdtNow);

        System.out.println(years + " years " + months + " months " + days + " days");
    }
}

输出:

23 years 11 months 17 days

我在您的问题中看到您尝试了类似Date = new Date()的操作。请注意,java.util.Date类已经过时了。我建议您停止使用过时且容易出错的java.util日期时间API,并切换到modern date-time API

本文链接:https://www.f2er.com/1954473.html

大家都在问