我有输入日期为"2020-10-31T00:00:00Z"。我想解析这个日期以获得长毫秒。注意:转换的毫秒应为悉尼时间(即GMT 11)。
仅供参考,
public static long RegoExpiryDateFormatter(String regoExpiryDate)
{
long epoch = 0;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
df.setTimeZone(TimeZone.getTimeZone("GMT+11"));
Date date;
try {
date = df.parse(regoExpiryDate);
epoch = date.getTime();
} catch (ParseException e) {
System.out.println("Exception is:" + e.getMessage());
e.printStackTrace();
}
System.out.println("Converted regoExpiryDate Timestamp*************** " + epoch);
return epoch;
}
输出:1604062800000,使用历元转换器给出日期为2019年10月30日,但在输入中,我将31号作为日期。有人能澄清一下吗?
通过执行df.setTimeZone(TimeZone.getTimeZone("GMT 11"));
,您要求日期格式化程序解释GMT 11时区中的字符串。但是,不应在该时区中解释字符串。看到字符串中的Z
了吗?代表GMT时区,所以你应该这样做:
df.setTimeZone(TimeZone.getTimeZone("GMT"));
事实上,您的字符串是ISO 8601格式的即时
(如果您愿意,也可以是“时间点”)。因此,您可以使用Instant来解析它。解析
,并使用toEpochMilli
获取毫秒数:
System.out.println(Instant.parse("2020-10-31T00:00:00Z").toEpochMilli());
// prints 1604102400000
警告:如果Java 8 API(即Instant
等)可用,则不应再真正使用SimpleDataFormat
。即使它们不是,你也应该使用NodaTime或类似的东西。
输出:1604062800000,通过使用Epoch转换器给出30/10/2019年的日期,但在输入中,我将31号作为日期传递。有人能澄清一下吗?
我正在从DB获取日期值作为长值。我正在将其转换为字符串以使用解析函数。下面是我的代码 但在执行此代码时,应用程序会崩溃。如果 但我将这个值作为“12302012235”(pzudo值)。 我怎么能这么做? 编辑: 我正在将日期值作为整数保存到数据库。我正在从DB中获取这个值,并将其转换为字符串。这是实际的strDate1值
我的一个软件中有这段代码,我简化了它,并在一个示例java类中重写了它。今天是“2022-04-08”,当我执行此代码时,变量等于,但它应该是。如何解决这个问题?
我刚到爪哇。Postgres db包含日期的格式为。我需要转换为。 我已经试过了,但是显示的结果是错误的
我需要将一些字符串日期转换为另一种格式的字符串日期 我想按照“yyyy-MM-dd'T'HH:MM:ss.SSSXX”模式获得ISO-8601格式的结果日期字符串 你能帮我实现这个吗?
问题 你的应用程序接受字符串格式的输入,但是你想将它们转换为 datetime 对象以便在上面执行非字符串操作。 解决方案 使用Python的标准模块 datetime 可以很容易的解决这个问题。比如: >>> from datetime import datetime >>> text = '2012-09-20' >>> y = datetime.strptime(text, '%Y-%m-%