标签: utc

如何在android中将UTC时间戳转换为设备本地时间

我需要将从服务器获得的UTC时间戳转换为本地设备时间.目前我的时间差5小时.例如,当我发布到服务器的帖子时间说5小时前而不是一秒钟前.如何解决这个问题.谢谢

以下是我的代码

long timestamp = cursor.getLong(columnIndex);
            CharSequence relTime = DateUtils
                    .getRelativeTimeSpanString(timestamp * 1000
                            + TimeZone.getDefault().getRawOffset(),
                            System.currentTimeMillis(),
                            DateUtils.MINUTE_IN_MILLIS);
            ((TextView) view).setText(relTime);
Run Code Online (Sandbox Code Playgroud)

android timestamp utc

33
推荐指数
4
解决办法
8万
查看次数

pytz utc转换

将天真时间tzinfo转换为UTC时间的正确方法是什么?说我有:

d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone('US/Pacific')
Run Code Online (Sandbox Code Playgroud)

第一种方式,pytz启发:

d_tz = tz.normalize(tz.localize(d))
utc = pytz.timezone('UTC')
d_utc = d_tz.astimezone(utc)
Run Code Online (Sandbox Code Playgroud)

第二种方式,来自UTCDateTimeField

def utc_from_localtime(dt, tz):
    dt = dt.replace(tzinfo=tz)
    _dt = tz.normalize(dt)
    if dt.tzinfo != _dt.tzinfo:
        # Houston, we have a problem...
        # find out which one has a dst offset
        if _dt.tzinfo.dst(_dt):
            _dt -= _dt.tzinfo.dst(_dt)
        else:
            _dt += dt.tzinfo.dst(dt)
    return _dt.astimezone(pytz.utc)
Run Code Online (Sandbox Code Playgroud)

不用说,这两种方法在很多时区产生不同的结果.

问题是 - 什么是正确的方法?

python datetime utc pytz

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

如何在特定时区转换DateTime?

我发现很难理解UTC是如何工作的.

我必须做以下事情,但如果我得到了正确的结果,我仍然感到困惑.

目标:

  1. 确保数据库中的所有已保存日期均为UTC格式
  2. 更新DefaultTimezone是在马尼拉时间
  3. 确保所有返回的日期都在马尼拉时间

所以代码是:

public ConvertDate(DateTime? dateTime)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GetFromConfig.DefaultTimeZone(); 
    }
}


public ConvertDate(DateTime? dateTime, int GMTTimeZone)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GMTTimeZone;
    }
}


public int TimeZone
{
    get { return m_TimeZone; }
    set { m_TimeZone = value; }
}


DateTime m_Value;
public DateTime Value
{
    get { return m_Value; }
    set 
    { 
        m_Value = value;
        DateTime converted = m_Value.ToUniversalTime().ToLocalTime();
    } …
Run Code Online (Sandbox Code Playgroud)

c# datetime utc

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

Moment.js:Date.now()javaScript analogue

有没有简单的方法来得到一个数字,因为经过的毫秒1 January 1970 00:00:00 UTCsimular的Date.now()JavaScript函数?

javascript utc unix-timestamp momentjs

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

pytz - 将UTC和时区转换为当地时间

我有一个datetimeutc时区,例如:

utc_time = datetime.datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)

还有一个pytz时区对象:

tz = timezone('America/St_Johns')
Run Code Online (Sandbox Code Playgroud)

转换utc_time到给定时区的正确方法是什么?

python timezone utc pytz

30
推荐指数
5
解决办法
4万
查看次数

当数据依赖于日期时间时,在数据库中保存日期时间和时区信息的最佳做法

关于在DB中保存日期时间和时区信息有很多问题,但总体水平更多.在这里,我想谈谈一个具体的案例.

系统规格

  • 我们有一个订单系统数据库
  • 这是一个多租户系统,租户可以使用任意时区(每个租户是任意的,但是单个时区,一次保存在租户表中,永不改变)

DB中需要涵盖业务规则

  • 当租户将订单放入系统时,订单编号将根据其本地日期时间计算(它不是字面上的数字,而是某种类型的标识符ORDR-13432-Year-Month-Day).精确计算目前并不重要,重要的是它取决于租户的本地日期时间
  • 我们还希望能够在系统级别上选择所有订单,放置在某些UTC日期时间之间,而不管租户如何(对于一般系统统计/报告)

我们最初的想法

  • 我们最初的想法是在整个数据库中保存UTC日期时间,当然,保持租户时区相对于UTC的偏移量,并且使用DB的应用程序总是将日期时间转换为UTC,以便DB本身始终使用UTC.

方法1

  • 保存当地租户的日期时间对每个租户来说都不错,但是我们遇到的问题包括:

    SELECT * FROM ORDERS WHERE OrderDateTime BETWEEN UTCDateTime1 AND UTCDateTime2
    
    Run Code Online (Sandbox Code Playgroud)

这是有问题的,因为OrderDateTime在这个查询中意味着基于租户的不同时刻.当然,此查询可能包括连接到Tenants表以获取本地日期时间偏移量,然后将在运行中进行计算OrderDateTime以进行调整.这是可能的,但不确定这是否是一个好方法呢?

方法2

  • 另一方面,当保存UTC日期时间时,那么当我们计算OrderNumber时,因为UTC中的日/月/年可能与本地日期时间不同

让我们举一个极端的例子; 让我们说租户比UTC早6个小时,他的当地日期时间是2017-01-01 02:00.UTC会是2016-12-31 20:00.此时下达的订单应该获得OrderNumber 'ORDR-13432-2017-1-1'但是如果保存UTC则会得到ORDR-13432-2016-12-31.

在这种情况下,在DB中创建Order时,我们应该根据重新计算的租户本地时间获得UTC日期时间,租户偏移和编译OrderNumber,但仍然以UTC格式保存DateTime列.

问题

  1. 处理这种情况的首选方法是什么?
  2. 是否有一个很好的解决方案,保存UTC日期时间,因为系统级报告,这对我们来说会很好吗?
  3. 如果使用保存UTC,是方法2)处理这些情况的好方法还是有一些更好/推荐的方式?

[UPDATE]

根据Gerard Ashton和Hugo的评论:

如果租户可以改变时区,那么最初的问题就细节而言并不明确,如果政治当局改变时区属性或某个时区的时区会发生什么.当然,这是非常重要的,但它不是这个问题的核心.我们可以在另一个问题中解决这个问题.

为了这个问题,让我们假设租户不会改变位置.该位置的时区属性或时区本身可能会发生变化,这些更改将在系统中与此问题分开处理.

timezone datetime utc datetimeoffset dst

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

.Net的DateTime方法是否能够识别闰秒?

随着今年闰秒在地平线上月它让我知道.net框架是否是闰秒知道?额外的第二个将在6月30日的最后一秒之后插入,因此UTC将正式:

2012 June 30,     23h 59m 59s
2012 June 30,     23h 59m 60s
2012 July  1,      0h  0m  0s
Run Code Online (Sandbox Code Playgroud)

.Net框架能够处理这个吗?如果Windows不是Leap Second意识到,这甚至是否重要?这会影响运行在O/S上的单声道应用程序是否具有 Leap Second感知功能?

编辑:

为了进一步扩展这一点,我想象一个场景,Linux上的基于Java的解决方案(Leap Second感知)调用.Net Web服务传递的内容是Java中的有效时间戳但是超出范围.净.有没有适合它的框架(也许像Noda Time一样)?

.net c# time datetime utc

29
推荐指数
2
解决办法
4119
查看次数

Java转换GMT/UTC到本地时间不能按预期工作

为了显示可重现的场景,我正在做以下事情

  1. 获取当前系统时间(当地时间)

  2. 将本地时间转换为UTC //在这里工作正常

  3. 反转UTC时间,返回当地时间.遵循3种不同的方法(如下所列),但所有3种方法仅保留UTC时间.

    {

    long ts = System.currentTimeMillis();
    Date localTime = new Date(ts);
    String format = "yyyy/MM/dd HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat (format);
    
    // Convert Local Time to UTC (Works Fine) 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date gmtTime = new Date(sdf.format(localTime));
    System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:" + gmtTime.toString() + "-" + gmtTime.getTime());
    
    // Reverse Convert UTC Time to Locale time (Doesn't work) Approach 1
    sdf.setTimeZone(TimeZone.getDefault());        
    localTime = new Date(sdf.format(gmtTime));
    System.out.println("Local:" + localTime.toString() + "," …
    Run Code Online (Sandbox Code Playgroud)

java utc simpledateformat date-formatting timestamp-with-timezone

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

如何在创建JavaScript日期时指定时区?

我有一个倒计时时钟,设定为2014年1月1日上午8点倒计时.

我使用以下代码来设置日期:

var futureDate = new Date(2014, 0, 1, 8, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

这有效,但我想更进一步,并将其设置为特定的时区.在我的情况下UTC -7.

我已经阅读了这个使用说明的答案:

new Date(Date.UTC(year, month, day, hour, minute, second))
Run Code Online (Sandbox Code Playgroud)

但我感到困惑的是我如何将时区设置为UTC -7,而我在线阅读的内容只会让我更加困惑.

有人可以解释如何Date.UTC工作以及如何设置时区,以便我的倒计时时钟根据指定的时区倒计时?

注意:任何答案必须是仅客户端代码.

javascript datetime date utc

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

将Java Date转换为UTC String

java.util.Date toString()方法显示本地时区的日期.

有几种常见的情况我们希望以UTC格式打印数据,包括日志,数据导出和与外部程序的通信.

  • java.util.Date在UTC中创建字符串表示形式的最佳方法是什么?
  • 如何用更好的toString()格式替换juDate的格式,这是不可排序的(谢谢@JonSkeet!)?

附录

我认为以自定义格式和时区打印日期的标准方法非常繁琐:

final Date date = new Date();
final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS zzz";
final SimpleDateFormat sdf = new SimpleDateFormat(ISO_FORMAT);
final TimeZone utc = TimeZone.getTimeZone("UTC");
sdf.setTimeZone(utc);
System.out.println(sdf.format(date));
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个单线像:

System.out.println(prettyPrint(date, "yyyy-MM-dd'T'HH:mm:ss.SSS zzz", "UTC"));
Run Code Online (Sandbox Code Playgroud)

java datetime utc string-formatting

28
推荐指数
3
解决办法
10万
查看次数