是否可以将 java.util.Date() 转换为 int?

Is it possible to turn java.util.Date() to int?

我正在开发一个应用程序,其中有一个 JFormattedTextField,当前日期采用 yyyy/mm/dd 格式,我只想移动到 int 这些值。但问题和欧盟正在做的是返回更多价值

JFormattedTextField textId = new JFormattedTextField(new SimpleDateFormat("yyyy/MM/dd"));
textId.setValue(new java.util.Date());
textId.setBounds(20, 310, 100, 25);
Date data = (Date)textId.getValue();
long dataFinal = data.getTime();

怎样才能让 Int 的值只有 YYYY/MM/DD? 使用 long,此时变量 dataFinal 给出 1603883824076 这是当前时间(以纳秒为单位)吗?

你是指下面这样的意思吗?

JFormattedTextField textId = new JFormattedTextField(new SimpleDateFormat("yyyy/MM/dd"));
textId.setValue(new java.util.Date());
textId.setBounds(20, 310, 100, 25);
String str = textId.getText().replaceAll("/", "");
int integer = Integer.parseInt(str);

integer的值为20201028(因为今天的日期是2020/10/28,即2020年10月28th

两条建议:

  1. 使用 java.time,现代 Java 日期和时间 API,作为您的约会工作。
  2. 如果您需要 int,请使用自 1970 年 1 月 1 日纪元以来的天数。

由于 java.time 提供了 toEpochDay 转换方法,因此这两个建议可以很好地结合在一起:

    Format localDateFormat = DateTimeFormatter.ofPattern("uuuu/MM/dd")
                                .toFormat(LocalDate::from);
    JFormattedTextField textId = new JFormattedTextField(localDateFormat);
    textId.setValue(LocalDate.now(ZoneId.systemDefault()));
    textId.setBounds(20, 310, 100, 25);
    LocalDate data = (LocalDate) textId.getValue();
    int dataFinal = Math.toIntExact(data.toEpochDay());

今天——2020 年 10 月 29 日——会给你 18564。

… with long the variable datefinal at the moment gives 1603883824076 is this the current time in nanoseconds? …

它们是自 1970 年 1 月 1 日 00:00 UTC 纪元以来的毫秒数。您可能已经注意到,它们不适合 int.

链接

  • Oracle tutorial: Date Time 解释如何使用 java.time.
  • My answer 问题 how to make a jtextfield having a fixed date format? 给出了关于使用 LocalDateJFormattedTextField 的更多细节.