我想输出一个PST偏移量的时间戳(例如,2008-11-13T13:23:30-08:00).java.util.SimpleDateFormat似乎没有以小时:分钟格式输出时区偏移,它排除冒号.有一种简单的方法可以在Java中获得时间戳吗?
// I want 2008-11-13T12:23:30-08:00
String timestamp = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").format(new Date());
System.out.println(timestamp);
// prints "2008-11-13T12:23:30-0800" See the difference?
Run Code Online (Sandbox Code Playgroud)
另外,SimpleDateFormat无法正确解析上面的示例.它扔了一个ParseException.
// Throws a ParseException
new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").parse("2008-11-13T13:23:30-08:00")
Run Code Online (Sandbox Code Playgroud) 我正在尝试解析从HTML5 datetime输入字段返回的值作为值.在Opera中试一试看一个例子.返回的日期如下:2011-05-03T11:58:01Z.
我想将其解析为Java Date或Calendar Object.
理想情况下,解决方案应该包含以下内容:
我需要将日期格式化为特定的字符串.
我使用SimpleDateFormat类来格式化日期,使用模式" yyyy-MM-dd'T'HH:mm:ssZ"它将当前日期返回为
" 2013-01-04T15:51:45+0530",但我需要为
" 2013-01-04T15:51:45+05:30".
以下是使用的编码,
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);
Log.e(C.TAG, "formatted string: "+sdf.format(c.getTime()));
Run Code Online (Sandbox Code Playgroud)
输出:格式化字符串:2013-01-04T15:51:45+0530
我需要格式2013-01-04T15:51:45+05:30只是在gmt时间之间添加冒号.
因为我正在使用Google日历来插入活动,所以它只接受我提到的所需格式.
这篇文章的目的是与语言无关。在设计包含日期的 API 时,您应该注意什么?拥有以下可能的优点:
2016-11-01T20:44:39Z而不是像这样以毫秒为单位的时间戳:1583749154495
根据What pattern should be used to parse RFC 3339 datetime strings in java,即使 RFC 3339 格式也可能有所不同。为什么不在所有地方都使用时间戳,例如在构建 REST 后端 API 时?这样做的另一个可能的优点是,您将时间戳作为数字发送到前端,然后前端库负责处理时区等事务,向每个用户显示调整后的日期输出。