我需要在几秒钟内为我的日期添加一定的时间.为此,我正在制作它:
Date startTime = dayStart(dateSelected);
startTime.setSeconds(startTime.getSeconds()+30);
Run Code Online (Sandbox Code Playgroud)
但是,通过这种方式,我得到这个警报:
此行中的多个标记
- 不推荐使用Date类型的方法setSeconds(int)
- 不推荐使用Date类型的方法getSeconds()
没有获得这些已弃用的警报的更好方法是什么?
\n\n\n避免收到这些已弃用警报的更好方法是什么?
\n
不要使用那个可怕的类,java.util.Date. 使用它的替代品,Instant.
myJavaUtilDate.toInstant().plusSeconds( 30 ) \nRun Code Online (Sandbox Code Playgroud)\n\n现代方法使用JSR 310 中定义的java.time类,它取代了可怕的遗留日期时间类,例如Calendar和Date。
\n\n\n日期开始时间 = dayStart(dateSelected);
\n
如果您想要一天中的第一时刻,则需要LocalDate(日期)和ZoneId(时区)。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;\nLocalDate localDate = LocalDate.now( z ) ; // Get the current date as seen in a particular time zone.\nRun Code Online (Sandbox Code Playgroud)\n\n获取该日期的开始时间。指定时区以获取ZonedDateTime. 始终让java.time确定一天中的第一个时刻。某些区域的某些日期不是从00:00:00 开始。它们可能会在其他时间开始,例如 01:00:00。
ZonedDateTime zdt = localDate.atStartOfDay( z ) ;\nRun Code Online (Sandbox Code Playgroud)\n\nplus\xe2\x80\xa6您可以通过调用&方法来执行日期时间数学运算minus\xe2\x80\xa6。
Duration使用或类指定未附加到时间线的时间跨度Period。
Duration d = Duration.ofSeconds( 30 ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n添加。
\n\nZonedDateTime zdtLater = zdt.plus( d ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n或者将这 2 行合并为 1 行。
\n\nZonedDateTime zdtLater = zdt.plusSeconds( 30 ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n如果您需要与尚未更新到java.time的旧代码进行互操作,请调用添加到旧类中的新转换方法。
\n\n旧java.util.Date类表示 UTC 中的某个时刻,分辨率为毫秒。它的替代品是java.time.Instant,也是 UTC 中的一个时刻,但具有更精细的纳秒分辨率。
Instant您可以从 a 中提取 a ZonedDateTime,有效地从某个时区调整为 UTC。同一时刻,时间轴上的同一点,不同的挂钟时间。
Instant instant = zdtLater.toInstant() ;\nRun Code Online (Sandbox Code Playgroud)\n\njava.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat。
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
\n\nJoda -Time项目现在处于维护模式,建议迁移到java.time类。
\n\n您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*
从哪里获取 java.time 类?
\n\nThreeTen -Extra项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval、、、等等。YearWeekYearQuarter
用于Date类的JavaDoc读取
从JDK 1.1开始,Calendar类应该用于在日期和时间字段之间进行转换,而DateFormat类应该用于格式化和解析日期字符串.不推荐使用Date中的相应方法.
而setSeconds在JavaDoc的方法有以下警告
已过时.从JDK 1.1版开始,由Calendar.set(Calendar.SECOND,int seconds)取代.
这意味着你应该做这样的事情
int numberOfseconds = 30;
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateSelected);
calendar.add(Calendar.SECOND, numberOfSeconds);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10935 次 |
| 最近记录: |