- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想使用内置的 Java 8 时间库将 UTC 转换为 PST/PDT。
我正在编写一个与 API 对话的程序,该 API 会根据时间范围返回对象列表。例如。从某个日期时间创建/修改的对象。
我的程序使用 LocalDateTime
并且该值始终采用 UTC。
API 接受 PST/PDT。
“所有 API 响应中表示的时区是 PST/PDT。同样,CompanyName 要求您进行所有时区转换并提交 PST/PDT 中的任何日期时间请求。” -- 引用自 API 文档
我觉得他们说的PST/PDT的意思是时间值应该反射(reflect)是不是夏令时。
例如。时间值每年变化两次。
如果是这样,是否有一种实用/传统的方法可以将 UTC 转换为 PST/PDT,而无需通过查看确切日期手动确定它是否处于夏令时?
更新
API以JSON格式返回对象。
我的应用程序使用查询参数向其 API 发送请求 api.com/objects?modified-date=${yyyy-MM-dd hh:mm:ss}
我目前正在使用以下方法进行转换:
public static String toSsTimeStr(LocalDateTime utcTime){
String pattern = "yyyy-MM-dd HH:mm:ss";
ZonedDateTime zdt = ZonedDateTime.ofInstant(utcTime, ZoneOffset.UTC, ZoneId.of("America/Los_Angeles"));
String timeStr = zdt.format(DateTimeFormatter.ofPattern(pattern));
return timeStr;
}
这是否有助于调整夏令时,换句话说,根据我当前的夏令时状态返回正确的值?
谢谢。
最佳答案
My program uses LocalDateTime and the value is always in UTC.
LocalDateTime
根本没有时区,所以它不是 UTC。
暂时使用 UTC,使用 Instant
类(class)。这代表了时间轴上高达纳秒分辨率的时刻。
Instant now = Instant.now();
要调整到时区,请应用 ZoneId
以获得 ZonedDateTime
。
切勿使用主流媒体中常见的 3-4 个字母缩写,如 PST
和 PDT
。它们不是实时时区,不是标准化的,甚至不是唯一的(!)。使用 proper time zone names采用大陆/地区
格式。
ZoneId zoneId = ZoneId.of( "America/Los_Angeles" );
ZonedDateTime zdt = instant.atZone( zoneId );
听起来您的数据接收器的设计很糟糕,它接受了代表日期时间值的字符串输入假设在America/Los_Angeles
时区但缺少任何指标(没有与 UTC 的偏移量,没有时区)。
要获得这样的字符串,缺少任何偏移量或区域,请使用预定义的 DateTimeFormatter
命名为ISO_LOCAL_DATE_TIME
.您将获得标准的字符串 ISO 8601格式如下:2011-12-03T10:15:30
。
String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME );
您的数据接收器从中间省略了 T
,因此请用 SPACE 替换。
output = output.replace( `T` , " " );
如果您的数据接收器只需要整秒,您可以截断日期时间值中的任何小数秒。
zdt = zdt.truncatedTo( ChronoUnit.SECONDS );
从另一个方向,从字符串到对象,定义一个格式化程序,解析为 LocalDateTime
并应用假设的时区。
String input = "2011-12-03 10:15:30";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss" );
LocalDateTime ldt = LocalDateTime.parse( input , formatter );
ZoneId zoneId = ZoneId.of( "America/Los_Angeles" );
ZonedDateTime zdt = ldt.atZone( zoneId );
关于Java 使用 Java 8 时间库将 UTC 转换为 PDT/PST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38447216/
Phing 与 Eclipse PDT 是否有任何集成,如果没有,是否有任何计划? 我找到了一个 Eclipse 插件“PTI - PHP Tool Integration”,它将 PHP Depen
当我在 NetBeans PHP 中按下 Ctrl+P 并记下函数调用参数时,我得到一个工具提示,提醒我这些参数: 在 Eclipde PDT 中是否有与此等效的东西?似乎我只能在键入函数名称时获得自
我正在实现 IPN + PDT 的情况是: 来自 paypal 的 IPN,之后我正在验证 IPN 并将其发送回 paypal(验证需要一些时间),如果一切正常,我会在数据库中设置 IPN 正常的标志
我正在使用 Eclipse PDT Helios,即使在处理小型 PHP 文件时,它有时也会卡住 2-3 秒,例如 10 行,其中没有任何包含或任何可能在解析时导致问题的复杂语句。我的机器有超过 3G
我有一个项目,其文件夹顺序很奇怪。它不是按字母顺序排列的,事实上我无法弄清楚它实际上是什么顺序。 请查看 http://www.automatem.co.nz/Screenshot.png 上的屏幕截
我正在尝试开始开发 eclipse 插件,特别是扩展 PDT .是否有扩展点、文档和其他操作方法的列表? 截至撰写本文时,最新版本是 Eclipse Juno 4.2 + PDT 3.1.0。 我检查
我正在尝试在我们的网站上添加一个 Paypal 支付按钮。我已打开自动返回和付款数据传输。 当我指向沙盒时,一切正常,它会返回我的网站,并在 url 中包含交易 ID。 当我指向生产 PayPal 时
多年来我一直在使用 PayPal 网站支付标准 - 我同时使用 IPN 和 PDT。最近我发现虽然 IPN 仍然可以正常工作,但客户在购买结束时不再返回我的网站,因此不会调用 PDT,并且客户永远不会
我已经浏览了(不是很有帮助的)PayPal 文档,但找不到这个问题的简单答案。当用户从 PayPal 返回时,URL 不包含查询字符串,因此我没有收到“tx”值(或与此相关的任何其他值)。 这是我发送
看起来这些都是在 Eclipse 中进行 PHP 开发的可比包 - 它们的相对优势和劣势是什么? 最佳答案 This blog post有很多信息比较两者,虽然它显然偏向于 PHPEclipse。 笔
如果我想转换时区,通常我会做如下 # local interpreted as pst to utc utc = pytz.utc pst = pytz.timezone('America/Los_A
我正在从 Dreamweaver 强制工作环境迁移到自由选择的工作环境。也就是说,我必须说我非常热衷于能够使用 Dreamweaver PDT。但是,我非常依赖“保存时自动上传”功能的使用。 我正在开
我安装了 Eclipse SDK Indigo,然后按照以下说明在其上安装 PDT: 这是ben-k 发布的原始解决方案主题链接:Eclipse indigo PDT 3.0 gotcha downl
Eclipse PDT中的构建路径和包含路径之间有什么区别? 最佳答案 简短的答案:将源文件夹的列表放在相同的位置(默认情况下Eclipse会对您有所帮助)。 更长的答案: 简单/直接的部分:Ecli
有没有办法让 PHPUnit 自动完成在 Eclipse PDT 中工作,而无需在您的项目中包含这些库? 最佳答案 您是否尝试过将 PHPUnit 代码放在项目的包含路径中? 关于Eclipse PD
我在使用 Yii 框架的 PHP 项目中遇到问题。我的设置如下:Win7 + Eclipse4.2 + PDT 3.1 + Yiiclipse PDT 扩展 + 启用 XDEBUG 的 WAMP 服务
我正在学习用于 PHP 开发的 Eclipse PDT。在我读过的几乎所有教程中,他们都将 eclipse 工作区放在网络服务器的文档根目录中(在我的例子中是 htdocs)。 这是普遍做法吗?我是说
PDT 插件的编辑器混淆了代码,并且不接受响应。我尝试了很多方法,但根本没有帮助。我想知道你们用什么来开发 PHP 应用程序,因为我是 PHP 新手。我是一名 Java 程序员,所以我对 Eclips
我在 Linux 中使用 Eclipse-PDT 和一种跨 gcc(定制的 gcc 来编译程序)。问题是,当我在源代码中包含头文件时,例如#include ,Eclipse会尝试在/usr/lib/
PDT 偏移量为 -7 或 -8 小时,具体取决于夏令时。我不能简单地从 UTC 时间戳中减去 7 * 60 * 60,正如其他人在谷歌搜索此问题时似乎所建议的那样。 我怎样才能简单地alert();
我是一名优秀的程序员,十分优秀!