有人可以详细解释以下内容:
我有一个代表date
的long
值。
-
与
long
值关联的timezone
是什么? -
如何将
long
值转换为具有正确time zone
的日期? -
有没有办法识别与
long date
值关联的timezone
?
长是自 1970 年 1 月以来的毫秒,格林威治标准时间。 所以,在这方面,它是格林威治标准时间。
表示java.util.Date
的long
值是从纪元开始经过的毫秒数。(1970年1月1日)
/**
* Allocates a <code>Date</code> object and initializes it to
* represent the specified number of milliseconds since the
* standard base time known as "the epoch", namely January 1,
* 1970, 00:00:00 GMT.
*
* @param date the milliseconds since January 1, 1970, 00:00:00 GMT.
* @see java.lang.System#currentTimeMillis()
*/
public Date(long date) {
fastTime = date;
}
与多头值关联的时区是什么?
你能将一个单位附加到长值吗?不。
这类似于说给定一个 int 2 它代表什么?.它可能是 2 英里或 2 磅。如何将长值转换为具有适当时区的日期?
你不能因为上述原因。有没有办法识别与长日期值关联的时区?
不。
日期(作为长整型或 java.util.Date)表示一个时刻。
除非您正在处理日历,否则不涉及时区。
您可以像这样为给定时区和区域设置创建日历:
long rightNow = System.currentTimeMillis();
Locale exampleLocale = Locale.GERMANY;
TimeZone zone = TimeZone.getTimeZone("EST");
Calendar theCalendar = Calendar.getInstance(zone, exampleLocale);
theCaledar.setTime(new Date(rightNow));
当时间是长格式时,TimeZone
不会与之关联。
您需要使用 SimpleDateFormat
(或)Calendar
API 来应用时区以获取长整型值。