我有不同的时区和他们的GMT和DST.例:
TimeZoneId | GMT offset | DST offset
| 1. Jan 2010 | 1. Jul 2010
--------------------------------------------------
America/Adak | -10.0 | -9.0
America/Anchorage | -9.0 | -8.0
America/Anguilla | -4.0 | -4.0
America/Antigua | -4.0 | -4.0
America/Araguaina | -3.0 | -3.0
Run Code Online (Sandbox Code Playgroud)
这个时区由Geoname提供.
如何计算C#/ .NET中已知GMT和DST的任何时区的当前时间?
更新:为了更好地指定,我提供"America/Antigua",我需要当前时间在"America/Antigua".
Date的DB值是:
04-OCT-10
Run Code Online (Sandbox Code Playgroud)
Bean方法返回:
Mon Oct 04 00:00:00 EEST 2010
Run Code Online (Sandbox Code Playgroud)
JSF返回:
03.10.2010
Run Code Online (Sandbox Code Playgroud)
JSF代码:
...
<h:outputText value="#{paym.dueDate}" >
<f:convertDateTime pattern="dd.MM.yyyy"/>
</h:outputText>
...
Run Code Online (Sandbox Code Playgroud)
是什么原因导致JSF日期值不正确?
谢谢
我试图在Javascript中以小时(小时)的间隔输出一系列时间(因此在诸如Firefox的Web浏览器中).这一系列时间将重叠短日(春季减少一小时)和漫长的一天(秋季增加一小时).我正在寻找的输出是本地时间,即应用时区和DST偏移.因此,例如,在英国,我们在短时间内从01:00到01:59错过了一个小时,输出将是:
00:00,02:00,03:00
在漫长的一天,我们从01:00到02:00有一个额外的小时,输出将是:
00:00,01:00,01:00,02:00,03:00
我已经找到了这两个很好的答案,突出了一些陷阱并解决了我的问题的一部分:
但真正的困难在于让javascript知道上面提到的第二个问题中确定的这个缺失和额外的小时(可以这么说).
我认为一个潜在的解决方案是以UTC(也就是GMT)运行,只是转换到当地时间,但我很难看到我能做到这一点.
有没有人对如何实现我追求的目标有任何想法?
我在R中有一系列字符时间戳.当我POSIXct使用直观方法改变他们的类时,R指定模糊的时区EST.
例如:
as.POSIXct("2012-08-06 15:32:00")
as.POSIXct("2012-08-06 15:32:00", tz = "Australia/Brisbane")
as.POSIXct("2012-08-06 15:32:00", tz = "")
Run Code Online (Sandbox Code Playgroud)
在我的两个(Mac和Windows)盒子上产生相同的输出:
"2012-08-06 15:32:00 EST"
Run Code Online (Sandbox Code Playgroud)
这里的问题EST可能是任意数量的时区:美国的东部标准时间,或澳大利亚的东部标准时间,或加拿大的另一个时区(来自?timezone):
请注意,其中一些名称可能与您的想法不同:特别是EST是加拿大使用的时区,没有夏令时,而不是EST5EDT和(澳大利亚)东部标准时间.
有一种方法可以设置时区,避免使用此EST标签.它被提及,但在R ?timezone帮助中没有完全解释.根据澳大利亚新闻社的报道,将x设置为好奇号登陆火星的时间:
x <- as.POSIXct("2012-08-06 15:32:00", tz = "Etc/GMT-10")
x
"2012-08-06 15:32:00 GMT-10"
Run Code Online (Sandbox Code Playgroud)
我们可以通过将其转换为美国时区并使用加州新闻报道进行检查来测试这是否正确:
y <- format(x, tz = "America/Los_Angeles")
y
"2012-08-05 22:32:00"
Run Code Online (Sandbox Code Playgroud)
如果使用此Etc/GMT+n或Etc/GMT-n表示法,请注意以下警告?timezone:
许多系统支持GMT + n和GMT-n形式的时区,它们与UTC固定偏移(因此没有DST).与某些用法相反(但与PST8PDT等名称一致),负偏移是UTC之前(东)的时间,正偏差是UTC后面(西侧)的时间.
我的要求是相当标准的; 我需要允许用户选择他们当前的TimeZone并将其保存在他们的帐户中.然后,我将使用此值将存储的DateTime值转换为本地化的时间.
我目前的想法是,我将允许用户TimeZoneInfo.Id从列表中选择一个.NET (在数据库中保存以允许更友好的描述但使用构造TimeZoneInfo.GetSystemTimeZones()) - 然后我将使用此值返回相关TimeZoneInfo实例TimeZoneInfo.FindSystemTimeZoneById()并执行转换.我在这里看到的主要问题是,它TimeZoneInfo.Id是注册表中保存的值,并不是"标准"ID(例如,与Olson相比).因此,服务器更新/迁移可能会使存储的ID完全无效并中断转换.
简而言之 - 这种方法有效/安全吗?如果没有,是否有更好的方法来存储用户时区偏好,同时还可以处理夏令时等而无需额外的逻辑?
之前已经问过这个问题,但不是我要找的答案.我将所有日期存储在UTC/GMT的MYSQL中.当我提取用户参考时间的数据时,最好使用CONVERT_TZ构造...
SELECT CONVERT_TZ(mytime,'UTC',usertimezone) as mytime FROM table
Run Code Online (Sandbox Code Playgroud)
或者最好在Mysql中临时设置会话区域然后进行正常查询?
SET time_zone = usertimezone;
Run Code Online (Sandbox Code Playgroud)
如果我使用第二个,我只为每个用户会话执行一次,或者如果我不使用持久打开,我是否需要在每个查询之前设置它?
我有一个时间序列x:
dput(x)
structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.8, 0, 0,
0, 0, 0, 0, 0, 0), index = structure(c(1193524740, 1193525340,
1193525940, 1193526540, 1193527140, 1193527740, 1193528340, 1193528940,
1193529540, 1193530140, 1193530740, 1193531340, 1193531940, 1193532540,
1193533140, 1193533740, 1193534340, 1193534940, 1193535540, 1193536140,
1193536740, 1193537340), class = c("POSIXct", "POSIXt")), class = "zoo")
Run Code Online (Sandbox Code Playgroud)
我聚合到1小时
as.xts(aggregate(x, align.time(index(x), 60*60)))
[,1]
2007-10-28 00:00:00 0.0
2007-10-28 01:00:00 0.0
2007-10-28 01:00:00 28.8
2007-10-28 02:00:00 0.0
2007-10-28 03:00:00 0.0
Run Code Online (Sandbox Code Playgroud)
如你所见,我得到"2007-10-28 01:00:00"重复.
我想知道这是一个错误还是我做错了什么?
我尝试将日期时间(即带有时钟时间的日历日期)存储在表中。
据我所知,DATETIME 类型没有时区。
TIME 类型仅限于 1970 年至 2038 年。
我生活在一个夏季(CEST)和冬季(CET)时区不同的国家。因此,当我们从 CEST 切换到 CET 时,有一个双小时 3。
当我无法获得包含时区的日期时间并且需要区分这个小时 3 时,我别无选择,只能手动处理它。
例如,为其添加另一列或将任何 DATETIME 转换为 UTC。
这是唯一的方法还是我错过了什么?
我有一个带有表的mySQL.共有30条记录都带有日期列.
如何更改表格中的所有现有记录以使今天的日期为格式?
date_default_timezone_set('America/Los_Angeles');
$date = date("m/d/y g:i A") ;
Run Code Online (Sandbox Code Playgroud) 我想在数据类型为datetime2(7)的列中插入一个默认值.但是,由于我的网站托管在不同时区的服务器上,因此getdate功能无法正常运行.我想知道是否有解决方案.我做了一些研究,发现了两种方法.首先是使用GetUTCDate()函数.但是,当我显示信息时,我需要进行转换.我确信我的Web应用程序仅用于我的时区.所以我想避免这种情况.第二种方式,这是我可以通过使用SwitchOffSet函数完成的最接近的方法:
CREATE TABLE [dbo].[Test_Date](
[test_id] [int] NOT NULL,
[test_date] [datetime2](7) NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Test_Date] ADD CONSTRAINT [DF_Test_Date_test_date] DEFAULT (switchoffset(CONVERT([datetimeoffset],getutcdate()),'+13:00')) FOR [test_date]
GO
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是未来几个月的+13:00原因,它将是+12:00导致白天节能时间变化的原因.结果,我每次都需要改变它.有人有解决方案吗?
谢谢.