相关疑难解决方法(0)

Hibernate在读取和写入Java Calendar对象到SQL TIMESTAMP时使用的时区是什么?

Hibernate Java Calendar对象写入 SQL TIMESTAMP列时,它会调整日期,计算机的日期或日历对象(或其他)中指定的日期?

当Hibernate TIMESTAMP到日历对象,以哪个时区并把它翻译的日期?

java sql timestamp hibernate

18
推荐指数
2
解决办法
3万
查看次数

在ISO 8601中识别时区

不,我不是在谈论区域偏移 - 这些区域在一年中可能因基于例如夏令时的区域而变化.我在谈论IANA维护的实际时区.我理解ISO 8601 支持这些,对吗?

什么平台在支持ISO 8601类似字符串表示中识别时区?我注意到最新的Java日期/时间库正在使用扩展的ISO 8601格式,例如2011-12-03T10:15:30+01:00[Europe/Paris].(请参阅DateTimeFormatter API.)

是否有一些融合约定(例如与其他语言和平台一起)用于扩展ISO 8601以支持时区指定?

java timezone iso8601 timezone-offset

18
推荐指数
2
解决办法
9863
查看次数

HQL查询两个日期之间的记录

我试图在我的Spring/Hibernate应用程序中使用HQL查询所有客户记录,其中Date1和Date2之间的DateAdded或Date1和Date2之间的LastSeen,所以我在Repository/DAO类中构建了这个HQL查询:

sessionfactory.getCurrentSession().createQuery("from Customer c where c.dateAdded BETWEEN '"+startDate+"' AND '"+endDate+"' OR c.lastSeenDate BETWEEN  '"+startDate+"' AND '"+endDate+"'").list();
Run Code Online (Sandbox Code Playgroud)

我调试了应用程序来检查startDate和endDate,发现它们被发送为:

startDate:Wed 1月22日01:16:57 HKT 2014

endDate:Wed Jan 29 01:16:57 HKT 2014

在DB中,我100%确定至少有一条记录符合此查询,因为此记录DateAdded和LastSeen如下:

2014-01-23 15:33:38

2014-01-25 15:33:38

那么有人可以告诉我我在做错了什么/在这里失踪了吗?

spring hibernate hql

17
推荐指数
3
解决办法
7万
查看次数

如何在网页中将UTC时间显示为本地时间?

我有一个数据库,其时间为UTC.这个时间可以在网页上显示,因此我被要求在页面中显示为本地时间,因为它可以从任何国家/地区查看.一位同事提到了从当前线程(在服务器上)获取国家/地区设置的一些内容,但我找不到任何有关此问题的详细信息.我想做什么?

asp.net datetime utc

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

从DateTime(utc)和TimeZoneInfo获取DateTimeOffset

我需要将DateTime + TimeZoneInfo转换为DateTimeOffset.

我该怎么做呢?我假设我必须通过TimeSpan,但后来我不确定夏令时是否会得到妥善处理..

谢谢!

UPDATE

TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time");
return new DateTimeOffset(DateTime.UtcNow, timeZone.BaseUtcOffset);
Run Code Online (Sandbox Code Playgroud)

此代码抛出异常..

Utc DateTime实例的UTC偏移量必须为0.\r \nParameter name:offset

更新2

对不起,我没有意识到DateTimeOffset只包含偏移量,它不包含实际的区域信息 - 所以我接受@Dave的回答,因为它是我将要使用的..

c# datetime

16
推荐指数
2
解决办法
4万
查看次数

c#daylight savings重复小时转换为UTC

我正在使用TimeZoneInfo在客户端wallclock'Eastern Time'和UTC之间进行转换.我的问题是在秋季DST更改期间发生的"重复"小时.

从UTC到Eastern的转换期间:
2010-11-07 06:00 UTC - >给出2010-11-07T 01:00:00-03:30
2010-11-07 07:00 UTC - >给出2010-11 -07T 01:00:00-03:30
我怎么知道哪个是第一个小时,哪个是第二个小时?DateTime.IsDaylightSavingTime()在两个小时都返回false,但是它不应该在第一个小时返回true吗?

同样,我如何存储2010-11-07 01:00:00 -03:30?如何将我的应用程序转换为UTC,因为它可能是2010-11-07 06:00或2010-11-07 07:00

对于那些需要代码的人,我骑自行车穿过一个带有UTC日期时间列的数据表,尝试使用'DupHr'列转换为东部第二个重复小时,但我总是在01:00时结束'DupHr'= 1.

    TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

    DateTime EasternTime;
    DateTime DuplicateHour = new DateTime(2010, 11, 7, 1, 0, 0);  // hard coded for this example
    TimeZoneInfo.AdjustmentRule[] rules =  est.GetAdjustmentRules();

    foreach (DataRow row in dt.Rows)
    {
        row["DupHr"] = 0;  // by default not duplicate hour
        EasternTime = TimeZoneInfo.ConvertTimeFromUtc((DateTime)row[UTCColumnName], est);
        if (!EasternTime.IsDaylightSavingTime())
        {
            if …
Run Code Online (Sandbox Code Playgroud)

c# time dst

15
推荐指数
1
解决办法
7595
查看次数

java中的datetime数据类型

我可以在Java中使用哪种数据类型来保存当前日期和时间?我想将日期时间存储在数据库中,并在java bean中有一个字段来保存它.

java.util.Date吗?

java timestamp date

15
推荐指数
3
解决办法
14万
查看次数

如何在数据库中存储TimeZoneInfo对象?

我知道,有些误导性的标题.从来没有真正想要存储TimeZoneInfo对象本身:相反,我想存储一些文化中立的标识符,然后可以在以后用于重建一个实例TimeZoneInfo.

目前,我正在存储TimeZoneInfo.Id属性的价值,在英语和俄语版本的Windows上似乎都可以,但我只是想确保我做正确的事情.

.net database timezone

14
推荐指数
2
解决办法
2700
查看次数

以UTC格式保存日期时间有时不准确

通常,处理日期时的最佳做法是将它们存储在UTC中并转换回用户在应用程序层中所期望的任何内容.

这不一定适用于将来的日期,特别是在日期/时间特定于用户时区的情况下.基于当地时间的时间表需要存储当地时间.

在我的情况下,有一个属性,它是一个包含未来事件的START_TIME时间戳,相比于其他一切现在或过去(包括created_atupdated_at时间戳).

为什么

该特定字段是用户选择时间的未来事件的时间戳.

对于未来的事件,似乎最好的做法是不存储UTC.

开发人员可以保存用户期望我们保存的内容:停机时间,而不是将时间与时区一起保存.

当用户选择上午10点时,即使由于夏令时用户与UTC的偏移在创建和事件日期之间发生变化,它也需要保持上午10点.

因此,在2016年6月,如果用户在悉尼午夜2017年1月1日创建活动,则该时间戳将作为数据库存储在数据库中2017-01-01 00:00.创建时的偏移量为+10:00,但在事件发生时,它是+11:00 ..除非政府决定在此期间改变它.

同样明智的,我希望我在2016年1月1日午夜在布里斯班创建一个单独的活动,也可以存储为2017-01-01 00:00.我存储时区,即存储Australia/Brisbane在单独的字段中.

在Rails中执行此操作的最佳实践方法是什么?

我尝试了很多选择但没有成功:

1.跳过转换

问题,这只会在读取时跳过转换,而不是写入.

self.skip_time_zone_conversion_for_attributes = [:start_time]
Run Code Online (Sandbox Code Playgroud)

2.更改要使用的整个应用程序配置 config.default_timestamp :local

为此,我设置:

配置/ application.rb中

config.active_record.default_timezone = :local
config.time_zone = 'UTC'
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ event.rb

...
self.skip_time_zone_conversion_for_attributes = [:start_time]
before_save :set_timezone_to_location
after_save :set_timezone_to_default

def set_timezone_to_location
  Time.zone = location.timezone
end

def set_timezone_to_default
  Time.zone = 'UTC'
end
...
Run Code Online (Sandbox Code Playgroud)

坦率地说,我不确定这是做什么的......但不是我想要的.

我认为它的存在是因为我的布里斯班事件被存储为,2017-01-01 00:00但是当我为悉尼创建一个新事件时,它被存储为2017-01-01 01:00 …

timezone ruby-on-rails

14
推荐指数
1
解决办法
4220
查看次数

如何在重复发生的事件中处理DST和TZ?

dateutil rrule是否支持DST和TZ?需要类似于iCalendar RRULE的东西.

如果不是 - 如何解决这个问题(安排重复发生的事件和DST偏移变化)

进口

>>> from django.utils import timezone
>>> import pytz
>>> from datetime import timedelta
>>> from dateutil import rrule
>>> now = timezone.now()
>>> pl = pytz.timezone("Europe/Warsaw")
Run Code Online (Sandbox Code Playgroud)

timedelta问题(需要具有相同的当地时间,但不同的DST偏移):

>>> pl.normalize(now)
datetime.datetime(2012, 9, 20, 1, 16, 58, 226000, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)    
>>> pl.normalize(now+timedelta(days=180))
datetime.datetime(2013, 3, 19, 0, 16, 58, 226000, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

rrule问题(每次出现时需要每个当地时间相同):

>>> r = rrule.rrule(3,dtstart=now,interval=180,count=2)
>>> pl.normalize(r[0])
datetime.datetime(2012, 9, 20, 1, 16, 58, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)
>>> pl.normalize(r[1])
datetime.datetime(2013, …
Run Code Online (Sandbox Code Playgroud)

python datetime pytz rrule python-dateutil

13
推荐指数
1
解决办法
3696
查看次数