是否可以将 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)
两条建议:
- 使用 java.time,现代 Java 日期和时间 API,作为您的约会工作。
- 如果您需要
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? 给出了关于使用
LocalDate
和 JFormattedTextField
的更多细节.
我正在开发一个应用程序,其中有一个 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)
两条建议:
- 使用 java.time,现代 Java 日期和时间 API,作为您的约会工作。
- 如果您需要
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? 给出了关于使用
LocalDate
和JFormattedTextField
的更多细节.