标签: timezone-offset

时区EST与EST5EDT有何不同?

EST5EDT的EST有何不同?EST不考虑DST吗?

我写了一个小的java片段来弄清楚差异和输出说EST5EDT考虑到DST,而EST没有

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST5EDT")); 
System.out.println("EST5EDT" +dateFormat.format(new Date()));
    /* prints EST5EDT2013-Apr-05 02:24:16.471 */  


dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST")); 
System.out.println("EST "+dateFormat.format(new Date()));
   /*prints EST 2013-Apr-05 01:24:16.472 */
Run Code Online (Sandbox Code Playgroud)

但下面的片段产生了令人震惊的输出

System.out.println("EST5EDT offset "+TimeZone.getTimeZone("EST5EDT").getRawOffset()/(60*60*1000));
/* prints 5 instead of 4 (DST) */
Run Code Online (Sandbox Code Playgroud)

有人可以解释这里究竟发生了什么吗?为什么getRawOffset返回5而不是4?如何使用DST获得时区偏移?

java timezone timezone-offset

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

如何获得DBTIMEZONE和SESSIONTIMEZONE之间的数字差异?

在Oracle中是否有顺畅的方法来获取当前时刻(当我执行调用时)SESSIONTIMEZONE和DBTIMEZONE之间的数字差异?

例如:

SELECT SESSIONTIMEZONE, DBTIMEZONE FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

返回:

+04:00  +07:00
Run Code Online (Sandbox Code Playgroud)

所以,我需要某种功能,通过调用给定参数,我得到这两个值之间的差异.

对于上面的例子:

SELECT get_numeric_offset(SESSIONTIMEZONE, DBTIMEZONE) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

将返回-3(标志是至关重要的).

当然,我可以自己编写这个函数,通过使用字符串并解析它们然后进行一些算术运算或做类似的事情(我仍然不认为这是一个非常流畅的解决方案:

SELECT (
        CAST(SYSTIMESTAMP AT TIME ZONE SESSIONTIMEZONE AS DATE) - 
        CAST(SYSTIMESTAMP AT TIME ZONE DBTIMEZONE AS DATE)
       )*24 
 FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

也许我错过了一些东西,Oracle实际上提供了一种计算两个给定时区之间差异的方法?

oracle timezone oracle10g oracle11g timezone-offset

7
推荐指数
2
解决办法
9980
查看次数

DateTimeOffset解析和自定义时区

我们将 XML DateTime 值解析为 DateTimeOffset 值。根据DateTime 的 W3C XSD 文档,该类型可能有时区信息,也可能没有。

我们的要求是:

  • 如果 XML 中提供了时区信息,请使用此时区
  • 如果未提供时区信息,则假定它是预定义的可配置时区(而不是服务器中的时区)中的本地时间。

问题是,当没有时区的 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)

c# timezone datetimeoffset timezone-offset

7
推荐指数
1
解决办法
6320
查看次数

如何在Javascript中将UTC/GMT日期时间转换为CST?(不是本地的,CST总是)

我有一个挑战,即后端数据始终以UTC时间存储.我们的前端数据始终在CST中显示.我无法访问这个"黑匣子".

我想在我们的数据仓库中反映这一点.它位于欧洲(CET).所以"本地"转换不起作用.

我想知道将UTC时间准确转换的最简单,最直接的方法(我可以将它以纪元毫秒或日期格式'2015-01-01 00:00:00')转换为中央标准时间.(根据夏令时落后5或6小时).

我看到很多关于转换到"本地"时间的线索......再次我不想要这个,我也不想简单地减去6个小时,这将是半年的错误.

有人有主意吗?这似乎是一个非常普遍的问题,但我一直在寻找,但一无所获.

javascript timezone datetime data-conversion timezone-offset

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

时差计算错误

我必须计算出发机场和到达机场之间的总飞行时间.

这项工作由以下代码片段完成:

    public int calculateFlightDuration(String departureDateTime, String depAirportCode, String arrivalDateTime,
        String arrAirportCode) {
    try {
        LocalDateTime depLocalTime = LocalDateTime.parse(departureDateTime, formatter);
        LocalDateTime arrLocalTime = LocalDateTime.parse(arrivalDateTime, formatter);

        ZoneOffset depZoneOffset = getTimeZoneOffset(depAirportCode);
        ZoneOffset arrZoneOffset = getTimeZoneOffset(arrAirportCode);

        if (depZoneOffset != null && arrZoneOffset != null) {

            OffsetDateTime offsetDepTime = OffsetDateTime.of(depLocalTime, depZoneOffset);
            OffsetDateTime offsetArrTime = OffsetDateTime.of(arrLocalTime, arrZoneOffset);

            Duration flightDuration = Duration.between(offsetArrTime, offsetDepTime).abs();

            return (int) flightDuration.toMinutes();

        }

    } catch (Exception e) {
        LOG.warn("::calculateFlightDuration depTime:{} dep.code:{} arrTime:{} arr.code:{}", departureDateTime,
                depAirportCode, arrivalDateTime, arrAirportCode);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是问题所在: …

java time duration datetimeoffset timezone-offset

7
推荐指数
1
解决办法
118
查看次数

从特定时区获取当前时间戳

有一种简单的方法来从特定时区获取javascript中的unix时间戳吗?例如,我希望客户端发送一个unix时间戳,但我想让它与我的时区相匹配.

谢谢!

javascript timezone unix-timestamp timezone-offset

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

Android AllDay事件在错误的一天开始或结束

我正在开发一个Android应用程序,其目标是在PHP应用程序和智能手机之间同步事件.一切都适用于"常规"活动,但我有"全天"活动的问题.我按照官方Android文档,将EVENT_TIMEZONE设置为UTC并设置dtstart和dtend的时间戳,对应于午夜UTC.

但是,根据活动创建时的手机时区,当我打开Goog​​le日历时,活动包括:

  • 电话时区为GMT + 2时正确显示
  • 从手机时区为GMT-11 - > GMT + 1前一天开始
  • 电话时区为GMT + 3 - > GMT + 13后一天结束

您应该知道我的测试是在法国进行的,目前我们的格林威治标准时间+2.Google日历配置为使用手机时区.

这是在插入之前转储事件的信息:

06-22 17:41:02.339: V/EventEntity - addToCalendar(6535): 
Event to be inserted : 
    calendar_id=8 
    dtstart=1466719200000      ( = 24/6/2016 0:00:00 )
    eventLocation= 
    title=Server AllDay Event 
    dtend=1466805600000        ( = 25/6/2016 0:00:00 )
    allDay=true 
    description= 
    hasAlarm=1 
    eventStatus=1 
    eventTimezone=UTC
Run Code Online (Sandbox Code Playgroud)

以下是执行事件插入的方法的代码,其中前一个日志来自:

Context context = AppContext.getAppContext();
ContentValues eventValues = this.getValuesForCalendar();

Log.v("EventEntity - addToCalendar", "Event to be inserted : " + eventValues);

Uri eventUri = context.getContentResolver().insert(Uri.parse("content://com.android.calendar/events"), eventValues);
this.setSystem_id(Long.parseLong(eventUri.getLastPathSegment()));

// …
Run Code Online (Sandbox Code Playgroud)

timezone android calendar google-calendar-api timezone-offset

6
推荐指数
0
解决办法
851
查看次数

Java没有关于所有IANA时区的信息

我正在尝试将来自前端的值映射到ZoneId类,如下所示:

Optional.ofNullable(timeZone).map(ZoneId::of).orElse(null)
Run Code Online (Sandbox Code Playgroud)

对于大多数时区,它工作正常,但是,对于某些值,Java抛出异常:

java.time.zone.ZoneRulesException: Unknown time-zone ID: America/Punta_Arenas
Run Code Online (Sandbox Code Playgroud)

但是,根据IANA,它是一个有效的时区:https: //www.iana.org/time-zones

Zone America/Punta_Arenas -4:43:40 - LMT 1890

我在考虑为这些时区使用偏移量(只是硬编码值),但我想应该有更方便的方法来解决这个问题.有没有办法可以处理Java?

其他不受支持的时区:

  • 美国/ Punta_Arenas
  • 亚洲/阿特劳
  • 亚洲/法马古斯塔
  • 亚洲/仰光
  • 美东时间
  • 欧洲/萨拉托夫
  • HST
  • MST

我的Java版本:"1.8.0_121"Java(TM)SE运行时环境(版本1.8.0_121-b13)Java HotSpot(TM)64位服务器VM(版本25.121-b13,混合模式)

java timezone timezone-offset java-time

6
推荐指数
1
解决办法
2528
查看次数

如何获取 UTC 和 iPhone 之间的时区偏移 - Swift 4.2?

我使用的是Swift 4.2。我正在努力获取 UTC 和 iPhone 上的时间之间的偏移时间。


我有这个代码

extension TimeZone {
    func offsetFromGMT() -> String
    {
        let localTimeZoneFormatter = DateFormatter()
        localTimeZoneFormatter.timeZone = self
        localTimeZoneFormatter.dateFormat = "Z"
        return localTimeZoneFormatter.string(from: Date())
    }
}
Run Code Online (Sandbox Code Playgroud)
func getCurrentTimeZone() -> String{
    return String (TimeZone.current.identifier)
}


var tzOffset = ""
let currentTimeZone = getCurrentTimeZone()
TimeZone.knownTimeZoneIdentifiers.forEach({ timeZoneIdentifier in
    if let timezone = TimeZone(identifier: timeZoneIdentifier)
    {
        //print("\(timezone.identifier) \(timezone.offsetFromGMT())")
    
        if(timezone.identifier == currentTimeZone){
            tzOffset = timezone.offsetFromGMT()
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

结果

如果我做

print(tzOffset)
Run Code Online (Sandbox Code Playgroud)

我有

-0500
Run Code Online (Sandbox Code Playgroud)

应该是-5因为我的 currentTimeZone 是吗America/Montreal …

timezone timezone-offset swift

6
推荐指数
1
解决办法
3038
查看次数

与指定时区对齐的聚集窗口

给出 Influxdb 的 Flux 语言的以下查询:

from(bucket: "some-great-metrics")
   |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
   |> aggregateWindow(every: 1mo, fn: sum)
   |> yield() 
Run Code Online (Sandbox Code Playgroud)

假设我当前的时区是PST. 如何确保尊重该特定时区 ( ) 中持续时间aggregateWindow的开始和结束?1moPST

到目前为止,在文档中搜索并没有给我带来太多启发。

timezone flux timezone-offset influxdb

6
推荐指数
1
解决办法
2295
查看次数