标签: timezone-offset

将特定时区中的datetime对象转换为该时区中的纪元秒

例如:

>>> print dt
2012-12-04 19:00:00-05:00

如您所见,我有这个日期时间对象如何将此日期时间对象转换为GMT -5中的纪元秒.

我该怎么做呢?

python datetime timezone-offset timestamp-with-timezone

5
推荐指数
1
解决办法
1916
查看次数

Android时区和DST问题

我有一个使用时间表的应用程序。用户选择时间表的开始/结束时间,然后我将开始/结束时间显示给用户。问题是,由于DST更改,显示的时间已关闭。

我可以为我的时区(东部时间)解决问题,也可以为GMT解决问题,如果我为GMT设置了特定案例,则阿拉斯加时间仍然是错误的。有什么建议么?

这是我的代码:

显示的时间:

long startTimeMillis = (startHour * 1000 * 60 * 60) + (startMin * 1000 * 60) - getTimeOffset();
Run Code Online (Sandbox Code Playgroud)

getTimeOffset:

TimeZone tz = TimeZone.getDefault();

//deal with GMT weirdness
if (tz.getRawOffset() == 0)
    return tz.getRawOffset() + tz.getDSTSavings();
else
    return tz.getRawOffset();
Run Code Online (Sandbox Code Playgroud)

我认为我需要类似的东西:

else if(tz.inDaylightTime(new Date()))
    return tz.getRawOffset() + tz.getDSTSavings();
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做了,那么东部时间比原先的时间要少1个小时,而阿拉斯加时间要少2个小时。如果我做相反的事情:(-而不是+)

else if(tz.inDaylightTime(new Date()))
    return tz.getRawOffset() - tz.getDSTSavings();
Run Code Online (Sandbox Code Playgroud)

那时东部时间比应该多1小时,但是阿拉斯加时间是正确的。

附录:

我也在tz.getOffset(new Date().getTime())每种情况下都尝试使用而不是tz.getRawOffset()。这实际上是我尝试的第一件事,因为根据Google的文档,此功能应该为您处理DST。

结束附录

我也尝试过使用日历,如下所示:

Calendar calendar = GregorianCalendar.getInstance();

return calendar.get(Calendar.ZONE_OFFSET);
Run Code Online (Sandbox Code Playgroud)

这为EST时间提供了正确的时间,但格林尼治标准时间提前1小时,阿拉斯加则落后1小时。我已经试过了:

if(tz.inDaylightTime(new Date()))
    return calendar.get(Calendar.ZONE_OFFSET) + …
Run Code Online (Sandbox Code Playgroud)

android dst timezone-offset

5
推荐指数
1
解决办法
7906
查看次数

为什么在delayed_job中关闭时区?

在我的Rails应用程序中,当我使用delayed_job gem 创建后台作业时,我将所有时间偏移6小时.

我的理解是delayed_job使用你的时区,但它就像是使用了错误的时区.而不是距离UTC 6小时(CST是我的时区),这是-12小时!

这里有一些视图代码来说明.注意:

  • Time.now给出2014-03-04 23:26:55 -0600
  • Time.now.utc给出2014-03-05 05:26:55 UTC
  • 但delayed_job几秒前的想法是2014-03-04 17:26:53 -0600

我的看法:

#delayed_jobs/index.html.erb

<h1>All Background Jobs</h1>
<p>The time now is: <%= Time.now %> </p>
<p>The time UTC is: <%= Time.now.utc %> </p>
<table>
  <tr>
    <th>ID</th>
    <th>Queue</th>
    <th>Created At</th>
    <th>Run At</th>
  </tr>

<% @delayed_jobs.each do |dj| %>
  <tr>
    <td><%= dj.id %></td>
    <td><%= dj.queue %></td>
    <td><%= dj.created_at %></td>
    <td><%= dj.run_at %></td>
  </tr>
<% end %>
</table> …
Run Code Online (Sandbox Code Playgroud)

ruby timezone ruby-on-rails delayed-job timezone-offset

5
推荐指数
1
解决办法
1871
查看次数

将已知时区的日期转换为UTC日期

日期和时间转换始终是我的薄弱环节.我有以下字符串格式的值:

  1. 字符串日期="2015-08-21 03:15"和此日期的时区是
  2. String timeZone ="GMT + 05:30";

现在我需要将此日期(我已经知道时区)转换为UTC日期.

java timezone datetime timezone-offset

5
推荐指数
1
解决办法
4783
查看次数

Ruby/Rails中的夏令时开始和结束日期

我正在开发一个Rails应用程序,我需要在给定特定偏移量或时区的情况下找到夏令时开始和结束日期.

我基本上在我的数据库中保存从用户的浏览器("+3","-5")收到的时区偏移量,并且由于夏令时,我想在它改变时修改它.

我知道Time实例变量具有dst?isdst方法,如果存储在它们中的日期是夏令时,则返回true或false.

 > Time.new.isdst
 => true 
Run Code Online (Sandbox Code Playgroud)

但是使用它来查找夏令时开始和结束日期将占用太多资源,我还必须为每个时区偏移执行此操作.

我想知道更好的方法.

ruby timezone ruby-on-rails dst timezone-offset

5
推荐指数
2
解决办法
3081
查看次数

夏季夏令时,ZonedDateTime会使用相同的冬季时区吗?

ZonedDateTime zdt = ZonedDateTime.of(2015, 10, 18, 0, 30, 0, 0,
    ZoneId.of("America/Sao_Paulo")); 
System.out.println(zdt); // 2015-10-18T01:30-02:00[America/Sao_Paulo]
Run Code Online (Sandbox Code Playgroud)

您可以看到小时是1我们设置小时的时间0,而时区是UTC-02:00夏令时时区应该是UTC-03:00.

但这是一个不同的例子:

ZonedDateTime zdt = ZonedDateTime.of(2015, 10, 18, 0, 30, 0, 0,
    ZoneId.of("America/Los_Angeles"));
System.out.println(zdt); //2015-10-18T00:30-07:00[America/Los_Angeles]
Run Code Online (Sandbox Code Playgroud)

您可以看到夏令时时区UTC-07:00,小时是0我们设置的.

他们为什么不同?

dst timezone-offset java-8 java-time zoneddatetime

5
推荐指数
2
解决办法
1561
查看次数

Firestore Date在检索并保存回数据库后丢失时区偏移量

我当地的时区是UTC + 2.

我正在构建一个具有RadCalendar控件的NativeScript应用程序,用户可以在其中选择日期.在我的场景中,用户选择2018年1月29日,30日和31日.

console.dir()所选日期的输出显示如下:

=== dump(): dumping members ===
JS: [
JS:     "2018-01-28T22:00:00.000Z",
JS:     "2018-01-29T22:00:00.000Z",
JS:     "2018-01-30T22:00:00.000Z"
JS: ]
JS: === dump(): dumping function and properties names ===
Run Code Online (Sandbox Code Playgroud)

显然,RadCalendar正在将值转换为UTC,这很酷.然后我将这些日期保存到我的Firestore数据库,在那里它们存储在我当地时间,并保留时区信息,如我的FireStore控制台的屏幕截图所示: 在此输入图像描述

到现在为止还挺好.现在,当我将FireStore数据库中的那些记录读回我的应用程序(并进入RadCalendar控件的.selectedDates属性)时,问题就出现了.

回读后,console.log()检索到的文档快照中的一个显示如下:

{
"theDate":"Jan 31, 2018 12:00:00 AM",
"available":false,
"memberUid":"N76BviTCX8fLdErAjMHYqx2GEU63",
"organizationUid":"zv5A7UC8B7bKzePGPyaJ"
}
Run Code Online (Sandbox Code Playgroud)

请注意,时区信息已消失.我想在此时执行代码仍然是"本地时区感知",并且日期(对于我的本地时区)不正确.但是在更改'available'属性并将记录保存回FireStore时会出现问题.

查看FireStore控制台中的日期值现在是什么样的: 在此输入图像描述

请注意,它不再是FireStore中的日期,而是一个字符串.

针对NativeScript的Chrome DevTools调试器实际上显示,在将数据检索回应用程序时,检索到的日期属性已经是字符串而不再是日期.可能值得一提的是,我正在使用这个NativeScript-Firebase插件与Firestore进行交互......可能是根插件库中存在根问题吗?

如何确保从FireStore数据库中返回的值在我的代码中保留为日期?

javascript date timezone-offset nativescript google-cloud-firestore

5
推荐指数
0
解决办法
1065
查看次数

使用 DateTimeOffset 作为参数问题进行过滤

我正在使用 C# 程序处理日期。

我想过滤任何具有 DateTime、DateTime2、DateTimeOffset 列的表。

我将LastRefreshDateas存储DateTimeOffSet为 UTC,并使用它来过滤这些表上的数据。我调整偏移量(使用NodaTime)LastRefreshDate我根据用于在这些表中存储日期的时区通常,它是由用户给出的。

所以我创建了一个测试样本来解释这个问题。通常,SQL 查询是动态的,参数也是动态的。这是示例代码:

[TestMethod]
public void Test()
{
    using (SqlConnection connection = new SqlConnection("Server=myserver;Database=mydb;User ID=admin;Password=admin"))
    {
        connection.Open();
        using (SqlCommand command = new SqlCommand("SELECT [TimeStamp] FROM  [dbo].[DATA] WHERE [TimeStamp] >= @p0", connection))
        {
            string datestring = "2019-06-18 13:35:20.1133868 -04:00";

            // Does not work
            // DateTimeOffset p0 = DateTimeOffset.Parse(datestring, CultureInfo.InvariantCulture);
            // Does work
            DateTime p0 = DateTime.Parse(datestring, CultureInfo.InvariantCulture);
            command.Parameters.AddWithValue("@p0", p0);
            using (SqlDataReader reader = command.ExecuteReader())
            {
                var dataTable = …
Run Code Online (Sandbox Code Playgroud)

c# sql-server timezone timezone-offset nodatime

5
推荐指数
1
解决办法
2513
查看次数

Instant.EPOCH的Java 8时区不正确

我有一台Linux机器,其时区设置为Asia / Qatar。当我使用格式化程序打印Instant.EPOCH时,它给我错误的区域信息,而对于Instant.now(),区域信息是正确的。下面是我的代码及其输出。谁能帮我,为什么会有这个差异?

import java.util.Date;
import java.time.format.DateTimeFormatter;
import java.time.Instant;
import java.time.ZoneId;

public class DateTest {
   public static void main(String[] args) {
      String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS Z";
      Instant myInstant = Instant.EPOCH;
      Instant myInstantNow = Instant.now();
      DateTimeFormatter formatter =  DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
      System.out.println(formatter.format(myInstant));
      System.out.println(formatter.format(myInstantNow));
   }
}
Run Code Online (Sandbox Code Playgroud)

代码的输出为:

1970-01-01T04:00:00.000 +0400
2019-09-29T18:30:14.766 +0300
Run Code Online (Sandbox Code Playgroud)

Java版本:“ 1.8.0_181”

如果我在Windows中运行相同的代码,它的工作正常。我的Instant.EPOCH也得到+0300。

java timezone timezone-offset java-8

5
推荐指数
1
解决办法
97
查看次数

javascript 中的 Date 构造函数对字符串“0”到“110”进行字符串解析背后的逻辑是什么?

我试图看看依靠执行 aconst myNewDate = new Date(dateString)然后使用 an的结果_.isDate(myNewDate)是否足以验证它是“有效日期”,但后来我想:我可以收到什么dateString

我想到要执行以下操作: for(i=0;i<110;i++) { console.log(i, new Date(String(i)))}

这是我得到的结果:

0 2000-01-01T06:00:00.000Z
1 2001-01-01T06:00:00.000Z
2 2001-02-01T06:00:00.000Z
3 2001-03-01T06:00:00.000Z
4 2001-04-01T06:00:00.000Z
5 2001-05-01T05:00:00.000Z
6 2001-06-01T05:00:00.000Z
7 2001-07-01T05:00:00.000Z
8 2001-08-01T05:00:00.000Z
9 2001-09-01T05:00:00.000Z
10 2001-10-01T05:00:00.000Z
11 2001-11-01T06:00:00.000Z
12 2001-12-01T06:00:00.000Z
13 Invalid Date
14 Invalid Date
15 Invalid Date
16 Invalid Date
17 Invalid Date
18 Invalid Date
19 Invalid Date
20 Invalid Date
21 Invalid Date
22 Invalid Date
23 Invalid Date
24 …
Run Code Online (Sandbox Code Playgroud)

javascript time parsing date timezone-offset

5
推荐指数
1
解决办法
265
查看次数