Sim*_*low 3 java time scala date
我一直在尝试,但我很惊讶无法找到解决我的简单问题的方法。
我有一个日期变量,其值如下:
res0: java.util.Date = Mon Jul 15 07:50:59 AET 2019
Run Code Online (Sandbox Code Playgroud)
现在我只想要日期部分而不是时间。Date 中可用的函数已被弃用。我发现的所有解决方案都是使用 Calendar 实例来获取今天的日期时间并使用 SimpleDateFormat 将其转换为字符串。
我不想要一根绳子。我想要一个不带时间部分的日期和一个不带日期部分的时间。
myJavaUtilDate\n.toInstant()\n.atZone(\n    ZoneId.of( "Australia/Sydney" )\n) \n.toLocalDate() \nRun Code Online (Sandbox Code Playgroud)\n\n仅适用于一天中的时间,没有日期和时区:
\n\n.toLocalTime()\nRun Code Online (Sandbox Code Playgroud)\n\n要生成字符串,请调用:
\n\n.format(\n    DateTimeFormatter\n    .ofLocalizedDate( FormatSyle.MEDIUM )\n    .withLocale( new Locale( "en" , "AU" ) )\n)\nRun Code Online (Sandbox Code Playgroud)\n\n立即将您的产品java.util.Date从传统类别转换为现代替代品Instant.
Instant instant = myJavaUtilDate.toInstant() ;\nRun Code Online (Sandbox Code Playgroud)\n\n这两个类别都代表 UTC 中的时刻,即零小时-分钟-秒的偏移量。调整到您想要感知日期的时区。
\n\n对于任何给定时刻,一天中的时间和日期都因全球时区而异。巴黎的中午不是 Montr\xc3\xa9al 的中午。新的一天在东方比在西方黎明得更早。您必须非常清楚这一点才能进行正确的日期时间处理。通过人类创造的时区概念,可以通过多种方式来看待自然界的某一时刻。
\n\n以、、 或 等格式指定正确的时区名称。切勿使用 3-4 个字母的伪时区,例如、或 ,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。continent/regionAmerica/MontrealAfrica/CasablancaPacific/AucklandAETESTIST
ZoneId z = ZoneId.of( "Australia/Sydney" ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n向 申请以Instant获得ZonedDateTime. 两者都代表相同的同时时刻,但以不同的挂钟时间观看。
ZonedDateTime zdt = instant.atZone( z ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n提取仅包含日期的部分。
\n\nLocalDate ld = zdt.toLocalDate() ;\nRun Code Online (Sandbox Code Playgroud)\n\n提取一天中的时间部分。
\n\nLocalTime lt = zdt.toLocalTime() ;\nRun Code Online (Sandbox Code Playgroud)\n\n再次将它们放回一起。
\n\nZonedDateTime zdt = ZonedDateTime.of( ld , lt , z ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n如果您需要java.util.Date再次与尚未更新到java.time的旧代码进行互操作,请进行转换。
Date d = Date.from( zdt.toInstant() ) ;\nRun Code Online (Sandbox Code Playgroud)\n