标签: dst

JAVA TimeZone发行EDT对EST

我是java的新手,因此很长一段时间以来都无法解决这个问题.

我使用的是Windows XP,机器设置为TimeZone:Eastern Time(美国和加拿大).

我有一个Java应用程序,它获取当前系统时间和时区信息,并将如下字符串:20101012 15:56:00 EST写入文件.

上面的最后一条日期,即:时区,随着我改变系统日期,从EST变为EDT.

准确:从11月(例如:2009年11月)到3月(2010年3月),它是EST,否则是EDT.

EST是什么,我想总是不EDT.

是否有任何特定的类/功能,我总是可以将其作为EST读取?

等待回复.


谢谢你的回复.好吧,我忘了提几件事.

  1. 我希望我的机器设置为:在Windows时区设置中的东部时间(美国和加拿大).

  2. 简单来说,我想做的是:获取我的机器时间,并将其写入文本文件

  3. 我知道从3月到11月发生的夏令时.

但问题是,当我将机器时间写入文件时,如果不存在夏令时(DST),则写为2010 01 12 15:56:00美国东部时间,如果是夏令时,则为20101012 15:56:00当下.我担心的是,无论是否是夏令时,我都想写EST.

java timezone dst

9
推荐指数
1
解决办法
3万
查看次数

在指定时区导入日期时间,忽略夏令时

我有从数据记录器获得的时间序列数据,该数据记录器设置为一个时区而没有夏令时(NZST或UTC + 12:00),数据跨越几年.数据记录器不考虑DST更改,并且在有/无DST的情况下同步到本地时间(取决于部署它的人员).

但是,当我将数据输入R时,我无法正确使用as.POSIXct忽略DST.我在具有以下设置的Windows计算机上使用R 2.14.0:

> Sys.timezone()
[1] "NZDT"
> Sys.getlocale("LC_TIME")
[1] "English_New Zealand.1252"
Run Code Online (Sandbox Code Playgroud)

以下是春季DST变化的三个时间戳,每个时间间隔为1小时:

> ts_str <- c("28/09/2008 01:00", "28/09/2008 02:00", "28/09/2008 03:00")
> as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="")
[1] "2008-09-28 01:00:00 NZST" NA
[3] "2008-09-28 03:00:00 NZDT"
> as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="UTC")
[1] "2008-09-28 01:00:00 UTC" "2008-09-28 02:00:00 UTC"
[3] "2008-09-28 03:00:00 UTC"
Run Code Online (Sandbox Code Playgroud)

如您所见,时钟在1:59到3:00向前跳跃,因此2:00无效,因此NA.此外,我可以使用tz="UTC"它来忽略DST更改.但是,我宁愿保留正确的时区,因为我有其他数据系列记录 DST(NZDT或UTC + 13:00),我想混合(通过merge)我的分析.

如何tz在MS Windows计算机上配置参数?我尝试过很多东西,比如"NZST","新西兰标准时间","UTC + 12:00","+ 1200"等,但没有运气.或者我修改其他一些设置?

timezone datetime r time-series dst

9
推荐指数
1
解决办法
1931
查看次数

如何在PHP中检测不明确和无效的DateTime?

处理DateTime用户提供的本地值时,由于夏令时转换,很可能会产生无效或模糊的时间.

在其他语言和框架中,通常有一些方法,例如isAmbiguousisValid时区的某些表示.例如在.NET中,有TimeZoneInfo.IsAmbiguousTimeTimeZoneInfo.IsInvalidTime.

许多其他时区实现具有类似的方法或功能来解决这个问题.例如,在Python中,pytz库将抛出一个AmbiguousTimeErrorInvalidTimeError异常,你可以捕获.

PHP有很好的时区支持,但我似乎找不到任何解决这个问题的方法.我能找到的最接近的东西是DateTimeZone :: getTransitions.这提供了原始数据,因此我可以看到一些方法可以在此基础上编写.但它们是否已存在于某个地方?如果没有,任何人都可以提供良好的实施吗?我希望他们的工作方式如下:

$tz = new DateTimeZone('America/New_York');
echo $tz->isValidTime(new DateTime('2013-03-10 02:00:00'));       # false
echo $tz->isAmbiguousTime(new DateTime('2013-11-03 01:00:00'));   # true
Run Code Online (Sandbox Code Playgroud)

php timezone datetime dst

9
推荐指数
1
解决办法
756
查看次数

php的date_default_timezone_set是否适应夏令时?

php的date_default_timezone_set是否适应夏令时?

我有这个代码,并想知道它是否总会导致正确的斯德哥尔摩时间?

  date_default_timezone_set('Europe/Stockholm');
  $timestamp = date("Y-m-d H:i:s");
Run Code Online (Sandbox Code Playgroud)

php timezone date dst

8
推荐指数
1
解决办法
8066
查看次数

为什么.NET没有正确转换时间?

在2013年,英国将不会在3月31日之前开始夏令时.

TimeZoneInfo.ConvertTimeToUtc当我尝试将给定时间转换为UTC时间时,减去一小时.

为什么是这样?我是否需要告诉这种方法夏令时不活跃?

var now = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);
var convertedTime = TimeZoneInfo.ConvertTimeToUtc(now, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard time"));
Console.WriteLine(convertedTime); // subtracts one hour, even though England time and GMT should be equal
Run Code Online (Sandbox Code Playgroud)

.net c# timezone dst

8
推荐指数
1
解决办法
2466
查看次数

moment.js,时区和夏令时

我从.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"),但如果有更简单的方法,请让我知道.

javascript timezone dst timezone-offset momentjs

8
推荐指数
1
解决办法
5739
查看次数

如何安全地安排Oracle dbms_scheduler作业时区和DST

我正在尝试设置一个DBMS_SCHEDULER作业,以便在每年1月1日凌晨1点在Oracle 11g上运行.如何设置其属性以确保它不会在错误的时间执行,因为时区差异或夏令时.

我花了很多时间浏览Oracle文档,但我还没有达到确定性水平.

顺便说一句,以下是我发现并考虑与该主题相关的规则:

工作属性

start_date 此属性指定计划启动此作业的第一个日期.如果start_date和repeat_interval保留为null,则作业将在计划启动后立即运行.对于重复使用日历表达式指定重复间隔的作业,start_date用作参考日期.第一次安排作业运行是当前日期或之后的日历表达式的第一个匹配.调度程序无法保证作业将在准确的时间执行,因为系统可能会过载,因此资源不可用.

repeat_interval此属性指定作业重复的频率.您可以使用日历或PL/SQL表达式指定重复间隔.评估指定的表达式以确定下次运行作业的时间.如果未指定repeat_interval,则作业将仅在指定的开始日期运行一次.有关详细信息,请参阅"日历语法".

Calendaring语法中的规则

  • 日历语法不允许您指定时区.而是Scheduler从start_date参数中检索时区.如果作业必须遵循夏令时调整,则必须确保为start_date的时区指定区域名称.例如,在纽约将start_date时区指定为"US/Eastern"将确保自动应用夏令时调整.如果将start_date的时区设置为绝对偏移量(例如"-5:00"),则不会遵循夏令时调整,并且您的作业执行将在一年中的一个半小时内关闭.
  • 当start_date为NULL时,Scheduler将确定重复间隔的时区,如下所示:
  • 它将检查会话时区是否为区域名称.会话时区可以通过以下任一方式设置:发出ALTER SESSION语句,例如:SQL> ALTER SESSION SET time_zone ='Asia/Shanghai'; 设置ORA_SDTZ环境变量.
  • 如果会话时区是绝对偏移而不是区域名称,则调度程序将使用DEFAULT_TIMEZONE Scheduler属性的值.有关更多信息,请参阅SET_SCHEDULER_ATTRIBUTE过程.
  • 如果DEFAULT_TIMEZONE属性为NULL,则在启用作业或窗口时,调度程序将使用systimestamp的时区.

timezone dbms-scheduler oracle11g dst job-scheduling

8
推荐指数
1
解决办法
2万
查看次数

PHP Daylight节省难题

我有一个关于处理夏令时的一般问题.我猜它不是特定于PHP的,但我用PHP编写,所以我认为包含它不会有什么坏处.

我有一个使用jquery fullcalendar构建的日历应用程序.用户在本地时区查看事件,我的服务器将它们存储为mysql中的UTC日期时间.(有关stackoverflow的其他问题表明这是处理时区的最佳方法.)因此,每次用户在日历上保存或查看事件时都会进行转换.这工作正常,但我很困惑如何最好地处理夏令时.

例如,假设时区EST(东部标准时间)的用户创建一个事件,当它不是夏令时,每天下午3点重复.我的PHP代码使用标准的DateTime(和DateTimeZone)类在UTC和EST之间转换UTC-5:00.当夏令时处于活动状态时,时钟将提前一小时,PHP将在UTC和EST之间转换UTC-4:00.从用户的角度来看,事件从原来的下午3点转移到下午4点.这不是我的用户和我想要的.无论夏令时如何,下午3点的活动都应该在下午3点举行.处理这个问题的最佳方法是什么?PHP中有没有办法忽略夏令时?

我的代码:

$getDate = new DateTime($storedDate, new DateTimeZone('UTC'));
$getDate->setTimezone(new DateTimeZone('America/New_York'));
$getDateString = $getDate->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

更多信息:(从我下面的评论中复制)

- 仅存储重复事件的第一次出现.根据用户请求的日历视图(月,周或日视图)动态创建所有其他事件.通过我编码的方式,它只创建在视图上可见的事件.

- 问题是,我还需要为其他时区保持不变.继续原始示例,下午3点应该在美国东部时间下午3点(不管夏令时),但如果在中部时间观看事件,该事件也应该在下午2点(不管夏令时).

从本质上讲,我需要以某种方式忽略夏令时.

php datetime dst

8
推荐指数
1
解决办法
4758
查看次数

Windows 7夏令时错误?

我正在尝试确定何时使用Perl localtime函数在Perl脚本中进行夏令时转换并使用打印时区strftime.

奇怪的是,这似乎适用于今年和其他近年来,但如果我尝试回到2000年,例如,Perl似乎认为过渡发生在错误的一天!

根据谷歌的说法,夏令时于2000年4月2日开始:

在此输入图像描述

...但由于某种原因,下面的Perl代码似乎不同意:

use POSIX qw(strftime);
use Time::Local;

# 03/12/2000 01:59:59
($year, $month, $day, $hour, $minute, $second) = (2000, 3, 12, 1, 59, 59);
$epoch = timelocal($second, $minute, $hour, $day, $month - 1, $year);

# Print the time
print strftime "%m/%d/%Y %H:%M:%S - %Z\n", localtime($epoch);

# 03/12/2000 02:00:00
($year, $month, $day, $hour, $minute, $second) = (2000, 3, 12, 2, 0, 0);
$epoch = timelocal($second, $minute, $hour, $day, $month - 1, $year);

# Print the time …
Run Code Online (Sandbox Code Playgroud)

perl time dst windows-7 windows-7-x64

8
推荐指数
1
解决办法
218
查看次数

java.time API如何确定政府更改区域规则?

我不住在使用夏令时的国家.

  1. 我保存了未来 LocalDateTime,从UTC和ZoneIdDB中保留了偏移量
  2. 该区域的政府更改了DST规则
  3. 未来的时间到了,我将检索该LocalDateTime区域

如果我申请ZoneId和偏移以获得该LocalDateTime区域,java.timeAPI 如何正确得到这个?它如何知道政府改变规则?它是否从互联网上获取更新?

java time datetime dst java-time

8
推荐指数
1
解决办法
169
查看次数