我正在尝试从用户的当前日期开始创建一个选择列表.我希望它以unix时间戳格式设置为午夜.
这就是我正在做的事情:
$today = strtotime('today');
echo $today;
Run Code Online (Sandbox Code Playgroud)
这是我的结果:
1333144800
Run Code Online (Sandbox Code Playgroud)
这是:星期五,2012年3月30日22:00:00 GMT根据Epoch Converter
我正在使用查询从Oracle DB获取一些应用程序收到日期,该日期存储为GMT.现在我必须在检索时将其转换为东部标准/夏令时.我使用以下查询:
select to_char (new_time(application_recv_date,'gmt','est'), 'MON dd, YYYY') from application
Run Code Online (Sandbox Code Playgroud)
它适用于标准时间.但是对于夏令时,我们需要根据时区信息将其转换为'edt'.我不太清楚如何做到这一点.请帮帮我
我想通过Node.js时刻模块获得纽约和香港之间的时区差异.我做了一些初步的工作.
var NewYork_time_hr = moment().tz("America/New_York").format('HH');
var HongKong_time_hr = moment().tz("Asia/Hong_Kong").format('HH');
Run Code Online (Sandbox Code Playgroud)
然后我可以继续编写一个函数来计算2个时区之间的差异,以小时为单位.我希望有一个更简单的方法.
使用时刻库有更优雅,更简单的方法吗?
我需要将以下格式的String解析为2015-01-15-05:00UTC中的LocalDate(或其他).问题是以下代码:
System.out.println(LocalDate.parse("2015-01-15-05:00", DateTimeFormatter.ISO_OFFSET_DATE));
Run Code Online (Sandbox Code Playgroud)
输出2015-01-15忽略偏移量.期望的输出是2015-01-16
提前致谢!
从文档:
偏移量按它们在世界各地的同一时间发生的顺序进行比较.因此,+10:00的偏移量在+09:00的偏移量之前出现,依此类推,直至-18:00.
有谁知道他们这样订购的原因?这似乎是违反直觉的,因为它与偏移的数值的顺序相反.它也是在GMT/UTC + 0居中地图上从左到右阅读的顺序的反面.
(旁白:我不明白为什么引用的文件提到"下降到-18:00".-12:00或-24:00我明白了.为什么-18:00?如果打印出偏移量所有支持的java.time.ZoneId时区范围从-11:00到+12:00.)
更新:我的回答.从同一文档中的其他地方:
2008年,世界各地的时区抵消时间从-12:00延长至+14:00.为了防止该范围的任何问题被扩展,但仍然提供验证,偏移范围限制在-18:00至18:00(含).
TZUpdater 2.1.0因tzdata2016g版本而失败.对于Java 8,它失败了,"源目录不包含file:VERSION"错误,而它完成了Java 7的"JRE updated to version:tzdataunknown"注释.
这样做的原因似乎是IANA tzdata发布的最近更改:取消设置Makefile的VERSION字段.有关此问题的报告存在错误:https://bugs.openjdk.java.net/browse/JDK-8166928.
DST日期(2016年10月30日)越来越近,我们至少需要一个解决方法.不知何故,这可能吗?
我从.Net服务返回UTC日期/时间列表,格式如下:
"2013-07-09 19:48:07 +00:00".
Run Code Online (Sandbox Code Playgroud)
在客户端上,我将每个字符串值转换为相应的基于UTC的时刻,就像这样
var fooUtc = new moment.utc(serverDateTimeString)
Run Code Online (Sandbox Code Playgroud)
在页面上,有一个下垂,其中包含用户可以更改的时区列表.这些绑定到时区对象的集合,如下所示:
{
id: "Central Standard Time",
label: "(UTC-06:00) Central Time (US & Canada)",
observesDaylightSavings: true,
baseUtcOffset: {
asHours: -6,
asMinutes: -360,
asText: "-06:00"
}
Run Code Online (Sandbox Code Playgroud)
然后我显示传递所选时区偏移的每个时刻,如下所示:
fooUtc.local().zone(selectedTimeZone.baseUtcOffset.asMinutes).format()
Run Code Online (Sandbox Code Playgroud)
但是,结果没有考虑夏令时,因为来自.Net的时区数据不能区分dst和非dst偏移.
有没有办法让这个工作与moment.js或新的时刻 - 时区位?我认为可以将标准UTC偏移名称(例如:"中央标准时间")映射到给定时区的Olson数据库标识符(例如:"America/Chicago"),但如果有更简单的方法,请让我知道.
鉴于UTC不是时区,而是时间标准(例如,如此处所述),为什么在我的Java应用程序中我可以使用UTC,就好像它是一个时区(请参阅下面的代码片段)?
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
Run Code Online (Sandbox Code Playgroud)
如果UTC不是时区,为什么TimeZone.getTimeZone("UTC")能够返回时区对象?
顺便说一句,在我的Windows机器上,UTC也在时区列表中(参见屏幕截图).
声明"UTC不是时区"实际上是错误的吗?
我目前在我的项目中使用带有postgres的Sequelize。我需要更改查询,因此它返回带有时区偏移量的 created_at 列。
var sequelize = new Sequelize(connStr, {
dialectOptions: {
useUTC: false //for reading from database
},
timezone: '+08:00' //for writing to database
Run Code Online (Sandbox Code Playgroud)
});
但这会影响整个数据库。但我只需要将时区用于选择查询。有谁知道这是怎么做到的吗?
我们将 XML DateTime 值解析为 DateTimeOffset 值。根据DateTime 的 W3C XSD 文档,该类型可能有时区信息,也可能没有。
我们的要求是:
问题是,当没有时区的 XML DateTime 被解析为 DateTimeOffset 时,它默认使用本地(系统)时区。似乎无法覆盖默认时区,也无法识别时区是在内部解析还是添加的。
有什么方法可以指定 DateTimeOffset 解析使用的默认时区吗?
如果不是,如何确定在解析 DateTimeOffset 期间是否自动解析或添加了时区?
我觉得奇怪的是,不支持像设置当前区域性那样为 .NET 应用程序设置时区。
因此,解决此问题的唯一方法似乎是首先将值解析为 DateTime 并检查 Kind 属性。如果 Kind 不是Unspecified,则再次将该值解析为 DateTimeOffset:
/*
sample values:
- 2015-06-03T10:47:01
- 2015-06-03T07:47:01Z
- 2015-06-03T10:47:01+03:00
*/
DateTimeOffset dto;
var timeZone = TimeZoneInfo.FindSystemTimeZoneById(ConfigurationManager.AppSettings["DefaultTimeZone"]);
var dt = DateTime.Parse(value);
if (dt.Kind == DateTimeKind.Unspecified)
{
dto = new DateTimeOffset(dt, timeZone.GetUtcOffset(dt));
}
else
{
dto = DateTimeOffset.Parse(value);
}
Run Code Online (Sandbox Code Playgroud)