时区如何使用零(0L)的count-from-epoch影响新Date

Elo*_*lon 0 java

以下代码在印度返回"1970-01-01"为0L,在加拿大它返回"1969-12-31".我不知道这里出了什么问题,谁能告诉我这里有什么问题.我怀疑这是因为时区问题,但需要更多信息.

public static RestEDate convertLongDateToStringDate(long lDate) {
    String returnDate = "";
    if (lDate >= 0) {
        returnDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date(lDate));
    }
    return new RestEDate(returnDate);
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

是的,这是一个时区问题.您的SimpleDateFormat实例默认为当前时区.1970年1月1日午夜GMT(这0L意味着什么)是1969年12月31日19:00在加拿大东海岸(GMT-0500)和1969年12月31日16:00在加拿大西海岸(GMT-0800).的Date情况下是正确的,但是这让您的解释取决于什么时区格式化程序使用.

要设置所使用的时区SimpleDateFormat(例如,GMT),请使用其setTimeZone方法(或者setCalendar如果您已经有Calendar想要使用的周围).