我以UTC long格式存储日期,并以用户时区显示。但当我试图只存储几天而没有时间时,它会误导到不同的日期。
例如:2016年5月05/06/2016 (06日的调度事件)。此日期对于所有没有时区的地区都是唯一的。如果来自GMT 5:30时区的用户试图在2016年6月5日添加事件,则ISO-8601格式为2016-05-05T16:00:00.000Z,毫秒1462464000000。
然后来自GMT时区的用户尝试查看此事件。日期将是05/05/2016而不是05/06/2016。
有没有办法转换日期没有任何时区。
始终存储整个时间点击。无论何时,只要将时间戳转换为要将其转换为的时区即可
这些将有助于转换:(时间戳到日期,反之亦然)
// timestamp to Date
long timestamp = 5607059900000; //Example -> in ms
Date d = new Date(timestamp );
// Date to timestamp
long timestamp = d.getTime();
//If you want the current timestamp :
Calendar c = Calendar.getInstance();
long timestamp = c.getTimeInMillis();
参考:在Java中将时间戳转换为日期
您可以使用SimpleDataFormat显示不同的日期格式。
例如:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainClass {
public static void main(String[] args) {
String pattern = "MM/dd/yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
Date date = format.parse("12/31/2006");
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
// formatting
System.out.println(format.format(new Date()));
}
}
Java 8为您的问题提供了解决方案。如果可以使用Java 8,请使用Java。时间LocalDate,仅表示没有时间的日期。存储toEpochDay方法返回的长值。下面给出了一个示例代码:
LocalDate date = LocalDate.of(2016, 5, 4);
// Store this long value
long noOfDays = date.toEpochDay(); // No of days from 1970-01-01
LocalDate newDate = LocalDate.ofEpochDay(noOfDays);
System.out.println(newDate); // 2016-05-04
问题内容: 我正在尝试使用Java日期和日历来实现从一个时区到另一个时区的简单转换。我正在尝试运行以下代码 但这仍然返回相同的日期,而不是+1小时…整个问题似乎微不足道,但我找不到任何简单的答案。在此先感谢您的帮助。 问题答案: 当您使用来打印日期时, 返回的是,并且始终以本地时区打印日期。 相反,您可能要使用:
问题内容: 我想将此GMT时间戳转换为GMT + 13: 我已经尝试过约100种不同的DateFormat,TimeZone,Date,GregorianCalendar等组合,以尝试执行此非常基本的任务。 这段代码可以满足我在当前时间的需求: 但是我想要的是设置时间而不是使用当前时间。 我发现任何时候我都尝试这样设置时间: 使用本地计算机的TimeZone。这是为什么?我知道,当“ new Da
我想将时间戳转换为。 这是我到目前为止已经实现的,但是它给了我错误的月份 任何帮助将不胜感激。
问题内容: 这是我的约会日期“ 15-05-2014 00:00:00” 如何将IST转换为UTC即(到14-05-2014 18:30:00) 基于时区到UTC时区。 我的代码是 如果用户从任何区域输入相同的日期,则将获得UTC时间(例如:从澳大利亚,然后从15-05-2014 00:00:00到14-05-2014 16:00:00) 请任何建议。 问题答案: 您不能将日期值“转换为”其他时区
> 如何将IST转换为UTC,即(至2014年5月14日18:30:00) 我的代码是 > 如果用户从任何区域输入相同的日期,则将获得UTC时间(例如:从澳大利亚输入,然后是2014年5月15日00:00:00至2014年5月14日16:00:00) 请提出任何建议。
我有一个日期时间,格式为2019年4月30日星期二16:00:00 0800,这是RFC 2822格式的日期 我需要将其转换为日期时间0800中的给定时区 如果我总结一下, 如何在Java中实现这一点?我已经尝试了下面的代码,但它给出的时间比当前时间短08小时,即