相关疑难解决方法(0)

如何在Java中使用不同的TimeZone获取当前时间?

好的 - 我觉得这个基本问题很愚蠢,但是嘿.

我试图在Java webapp中的不同时区获取当前时间.我尝试了以下明显的解决方案:在我的servlet中,

Calendar localCalendar = Calendar.getInstance(myBean.getTimeZone());

然后我将日历对象作为请求属性'localCalendar'传递给JSP:

It is now: [${requestScope.localCalendar.time}]
in TimeZone ${requestScope.localCalendar.timeZone.ID}
Run Code Online (Sandbox Code Playgroud)

但我的输出似乎忽略了时区设置,即

It is now: [Thu Nov 26 10:01:03 GMT 2009] in TimeZone Indian/Mahe

我猜它与Locale设置有关,有没有办法在另一个时区为我的Locale设置格式化时间?

java timezone jsp locale servlets

1
推荐指数
1
解决办法
2781
查看次数

在 Java 中获取 UTC 时间戳

一个老堆栈溢出发帖建议得到Java中的UTC时间戳的方式如下:

Instant.now()   // Capture the current moment in UTC.
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对我不起作用。我有一个非常简单的程序(转载如下),它展示了不同的行为。

在 Windows 上:时间是本地时间,并标有 GMT 的偏移量

在 Linux 上:时间再次是本地时间,并且为本地时区正确标记了时间


问题:我们如何在 Java 程序中显示 UTC 时间戳?


我的示例源代码如下:

import java.time.Instant;
import java.util.Date;

public class UTCTimeDisplayer {
    public static void main(String[] args) {
        System.out.println(System.getProperty("os.name"));
        Date currentUtcTime = Date.from(Instant.now());
        System.out.println("Current UTC time is " + currentUtcTime);
    }
}  
Run Code Online (Sandbox Code Playgroud)

窗口输出:

C:\tmp>java UTCTimeDisplayer
Windows 10
Current UTC time is Fri Jan 22 14:28:59 GMT-06:00 2021
Run Code Online (Sandbox Code Playgroud)

Linux输出:

/tmp> java UTCTimeDisplayer
Linux
Current UTC time …
Run Code Online (Sandbox Code Playgroud)

java timezone datetime date utc

1
推荐指数
2
解决办法
3645
查看次数

在 Date Java 中设置时区

尝试在 Date 中设置时区(我知道 Date 已弃用)

    LOG.error(modifiedDate + "Date in service"); //Mon Sep 21 06:15:00 CDT 2020
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.ENGLISH);
format.setTimeZone(TimeZone.getDefault());
String dateString = format.format(modifiedDate);
LOG.error(dateString + "  dateString"); //2020-09-21 06:15:00 -0500
Date date = format.parse(dateString);
LOG.error(date + "    date after parsing"); //Mon Sep 21 06:15:00 CDT 
Run Code Online (Sandbox Code Playgroud)

解析后时区没有改变,我错过了什么?

java date

0
推荐指数
1
解决办法
74
查看次数

为什么 SimpleDateFormat 总是忽略连接的时区?

我在 Java 中遇到 Date 和 SimpleDateFormat 对象的一些问题。我知道我需要在 Java 8 中使用新的日期和时间 API 来切换它们,我想这样做,但我有一个问题。当我从数据库中检索我的日期时(它是 SimpleDateFormat 并且我无法更改它),并且当我想添加一些小时(例如下午 4 点),然后我需要在用户从下拉列表中选择的时区中(假设美国/加拉加斯),所以我希望美国/加拉加斯的结果是 16 小时,但在我的情况下是 16 小时 UTC + UTC 和美国/加拉加斯之间的差异。这是我的代码:

Date startDate -> it's value is Tue Feb 23 20:00:00 CET 2021
Date date = new SimpleDateFormat("yyy-MM-dd").format( startDate + 4:00PM + America/Caracas);
Run Code Online (Sandbox Code Playgroud)

但是,奇怪的是,这种格式化广告 4 PM 值但不知何故忽略了时区的那部分。所以,相反,我在美国/加拉加斯有 20 小时,我在 UTC 时间有 20 小时。有人可以帮助我吗?

java datetime date datetime-format java-8

-2
推荐指数
1
解决办法
102
查看次数

标签 统计

java ×4

date ×3

datetime ×2

timezone ×2

datetime-format ×1

java-8 ×1

jsp ×1

locale ×1

servlets ×1

utc ×1