有人请告诉我如何从TimeZone课程中获取时间。当我运行此代码时
System.out.println("Default Timezone: " + TimeZone.getDefault())
我得到了这个
Default Timezone: sun.util.calendar.ZoneInfo[id="Asia/Manila",offset=28800000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null]
我找不到任何可以获得时间的函数,例如TimeZone.getDefault().getTime()
。请帮忙。
答案 0 :(得分:4)
请尝试以下方式获取EST TimeZone的时间:
TimeZone est = TimeZone.getTimeZone("America/New_York");
Calendar calendar = new GregorianCalendar(est);
System.out.println(calendar.getTime()); //<-prints the date
System.out.println(calendar.getTimeInMillis()); //<-prints the time in milliseconds
您可以将时区更改为其他时区,例如PST获取其他时区的时间:
TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
calendar.setTimeZone(pst);
System.out.println(calendar.getTime()); //<-prints the date
System.out.println(calendar.getTimeInMillis()); //<-prints the time in milliseconds
希望这有帮助。
答案 1 :(得分:3)
Date theCurrentDateAndTime = new GregorianCalendar(timeZone).getTime();
答案 2 :(得分:2)
TimeZone是一个抽象类,代表时区而不是时间。正如您所提到的,您使用getDefault()调用getDefault(),TimeZone.getDefault()
,您将根据程序的运行位置获取时区。
如果您只想打印日期,则可以使用Calendar或Date等选项 或者如果您希望按时区特定时间移动,则设置时区并获取该区域的时间。
您的计划会以这种方式打印日期(这不仅仅是这样):
TimeZone defaultTimezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(defaultTimezone);
System.out.println(calendar.getTime());
答案 3 :(得分:1)
答案 4 :(得分:1)
您需要使用Date
(或)Calendar
API来获取今天的日期/时间。
这些API使用系统中配置的默认时区。
答案 5 :(得分:1)
答案 6 :(得分:0)
LocalTime.now( // Capture the current time-of-day for a particular time zone. Result discards the zone, leaving an object unaware of any zone or offset.
ZoneId.of( "Asia/Manila" ) // Represent the time zone, the history of past, present, and future changes in offset for a specific region.
)
23:45
日期时间处理的现代方法使用 java.time 类,这些类取代了麻烦的旧遗留日期时间类。
你的问题不清楚?您是否要求特定时区的当前时间?或者您是否要求提供有关时区本身的信息,它与UTC的偏移量?
offset-from-UTC是从同一时刻UTC移位的小时数,分钟数和秒数。时区是特定地区人民使用的偏移的过去,现在和将来变化的历史。
以continent/region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用诸如EST
或IST
之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "Asia/Manila" ) ;
仅针对特定地区人员在挂钟上看到的当前时间,使用LocalTime.now
并传递所需的区域。由此产生的对象缺少区域或偏移的任何概念,因为在确定当前时刻之后将丢弃通过的区域。
LocalTime lt = LocalTime.now( z ) ;
23:45
对于该区域中和日期的日期,请使用ZonedDateTime
。
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
要以UTC格式捕获当前时刻,请使用Instant
。
Instant instant = Instant.now( z ) ;
ZoneId
和ZoneOffset
类取代TimeZone
。
ZoneRules rules = z.getRules() ;
您可以询问ZoneId
有关用于定义特定时区行为的规则。您必须传递片刻(Instant
),因为时区的整个点是该区域的人员使用的偏移量已经改变了历史记录。例如,愚蠢到足以练习Daylight Saving Time (DST)的国家每年更换两次。
ZoneOffset offset = rules.getOffset( zdt.toInstant() ) ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和&amp; SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
使用符合JDBC driver或更高版本的JDBC 4.2,您可以直接与数据库交换 java.time 对象。不需要字符串也不需要java.sql。* classes。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。