如何解决是否可以将java.util.Date转换为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? 现在可变日期最终值长会给出1603883824076,这是当前时间(以纳秒为单位)吗? 谢谢您的帮助!
解决方法
两个建议:
- 使用现代Java日期和时间API java.time进行日期工作。
- 如果您需要
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。
…此刻变量datefinal较长,给出1603883824076 这是当前时间(以纳秒为单位)吗? …
它们是自1970年1月1日UTC 00:00以来的毫秒数。您可能已经注意到,它们不适合int
。
链接
- Oracle tutorial: Date Time解释如何使用java.time。
- My answer到问题如何制作具有固定日期格式的jtextfield?,详细说明如何将
LocalDate
与JFormattedTextField
一起使用。
您是说以下意思吗?
JFormattedTextField textId = new JFormattedTextField(new SimpleDateFormat("yyyy/MM/dd"));
textId.setValue(new java.util.Date());
textId.setBounds(20,25);
String str = textId.getText().replaceAll("/","");
int integer = Integer.parseInt(str);
integer
的值为20201028(因为今天的日期是2020/10/28,即2020年10月28日)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。