GVKun编程网logo

centos – 当/ etc / localtime符号链接到/usr/share / zoneinfo / GMT时,为什么$date仍显示EST?

4

如果您对centos–当/etc/localtime符号链接到/usr/share/zoneinfo/GMT时,为什么$date仍显示EST?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,

如果您对centos – 当/ etc / localtime符号链接到/usr/share / zoneinfo / GMT时,为什么$date仍显示EST?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于centos – 当/ etc / localtime符号链接到/usr/share / zoneinfo / GMT时,为什么$date仍显示EST?的详细内容,并且为您提供关于.net – Windows XP上的DateTime.ToLocalTime、/sbin/ldconfig.real: /usr/local/lib/libcudnn.so.7 不是符号链接、Calendar.getInstance(TimeZone.getTimeZone(“ UTC”))没有返回UTC时间、Calendar.getInstance()getTime()返回的日期为“ GMT”,而不是默认的TimeZone的有价值信息。

本文目录一览:

centos – 当/ etc / localtime符号链接到/usr/share / zoneinfo / GMT时,为什么$date仍显示EST?

centos – 当/ etc / localtime符号链接到/usr/share / zoneinfo / GMT时,为什么$date仍显示EST?

我在服务器上设置日期时遇到问题…
$ls -la /etc | grep localtime
lrwxrwxrwx  1 root root  23 Mar 6  12:07 /etc/localtime -> /usr/share/zoneinfo/GMT

出于某种原因,虽然时间17:31:06是GMT,但时区后缀是EST …

$date
Tue Mar  6 17:31:06 EST 2012

并且硬件时钟也搞砸了 – 10:32:12不是EST:

$hwclock --show
Tue 06 Mar 2012 10:32:12 PM EST  -0.000276 seconds

如果我将hwclock设置为系统时间或本地时间,则会将其设置为错误:

$hwclock --localtime
Tue 06 Mar 2012 10:34:22 PM EST  -0.000190 seconds
$date
Tue Mar  6 17:34:24 EST 2012

知道发生了什么事吗?

谢谢

处理时间时不会疯狂的三个简单规则:

第一:您正在运行Unix(可能是NTP):确保已将系统的BIOS /硬件时钟设置为UTC.
你需要的绝对最后一件事是你的硬件(BIOS)时钟与Unix战斗,时区是正确的,夏令时开始/结束时.将硬件时钟设置为UTC可以使生活更轻松.

第二:当您更改系统范围的时区时,有时需要注销并重新登录,以便系统了解发生的情况.一般来说,我建议重新启动 – 这可以确保操作系统的每个部分都被踢出头来理解发生了什么.
当您将机器的时区更改为夏威夷时,您不希望cron仍然在美国/东部时间运行.

第三:如果您的用户帐户仍然对时区有一些混乱的想法可能会设置TZ环境变量 – 请仔细检查.profile和shell rc文件.Unix并不假设系统中的每个用户都在本地时区,因此它允许您覆盖每个用户(或每个shell)级别.如果您的系统在(例如)美国/东部时间运行并且您有用户从日本登录,这非常有用 – 人们喜欢他们的系统报告的时间与他们墙上的时钟相匹配:)

.net – Windows XP上的DateTime.ToLocalTime

.net – Windows XP上的DateTime.ToLocalTime

.NET DateTime.ToLocalTime方法的文档说明:

On Windows XP systems,the ToLocalTime
method recognizes only the current
adjustment rule when converting from
UTC to local time. As a result,
conversions for periods before the
current adjustment rule came into
effect may not accurately reflect the
difference between UTC and local time.

我正在开发Windows 7,但部署到混合环境.如何提供与ToLocalTime的Windows 7行为相匹配的一致,正确的实现?

编辑

我跑了一个测试:

static void Main()
{
    // 8 AM in July,UTC. That would have been DST,so 3 AM CDT.
    var dstDate = new DateTime(2010,7,1,8,DateTimeKind.Utc);

    // 8 AM in December,UTC. Not DST,so 2 AM CST.
    var nonDstDate = new DateTime(2010,12,DateTimeKind.Utc);

    Log("DST Date ToLocalTime: " + dstDate.ToLocalTime());
    Log("DST Date ConvertTimeFromUtc: " + ConvertTimeFromUtc(dstDate));
    Log("Expected: 3 AM July 1 2010");

    Log(string.Empty);

    Log("Non-DST Date ToLocalTime: " + nonDstDate.ToLocalTime());
    Log("Non-DST Date ConvertTimeFromUtc: " + ConvertTimeFromUtc(nonDstDate));
    Log("Expected: 2 AM December 1 2010");

    Log(string.Empty);

    Log("Date ToLocalTime Kind: " + dstDate.ToLocalTime().Kind);
    Log("Date ConvertTimeFromUtc Kind: " + ConvertTimeFromUtc(dstDate).Kind);
}

private static void Log(string message)
{
    Console.WriteLine(message);
}

private static DateTime ConvertTimeFromUtc(DateTime utcDateTime)
{
    return
        DateTime.SpecifyKind(
            TimeZoneInfo.ConvertTimeFromUtc(
                utcDateTime,TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id)),DateTimeKind.Local);
}

XP Pro 32位,SP3(作为VM)和Windows 7 Enterprise 64位的结果相同:

DST Date ToLocalTime: 7/1/2010 3:00:00 AM
DST Date ConvertTimeFromUtc: 7/1/2010 3:00:00 AM
Expected: 3 AM July 1 2010

Non-DST Date ToLocalTime: 12/1/2010 2:00:00 AM
Non-DST Date ConvertTimeFromUtc: 12/1/2010 2:00:00 AM
Expected: 2 AM December 1 2010

Date ToLocalTime Kind: Local
Date ConvertTimeFromUtc Kind: Local

文档错了吗?我可以简单地拨打ToLocalTime吗?

编辑2

我们在一个真正的XP系统(不是VM)上运行它,并在那里得到相同的结果.我的测试用例是否正确?任何人都可以提供结果会有所不同的情况吗?

解决方法

On Windows XP systems,the ToLocalTime
method recognizes only the current
adjustment rule when converting from
UTC to local time. As a result,
conversions for periods before the
current adjustment rule came into
effect may not accurately reflect the
difference between UTC and local time.

美国在2007年改变了夏令时的调整规则.

> 2006年:4月的第一个星期日,10月的最后一个星期日结束.
> 2007年:3月的第2个星期日,11月的第1个星期日结束.

问题在于他们遵循2007年所有日期的规则,而不仅仅是2007年之后的日期.DST规则在20年内没有改变,Windows XP在不同年份没有不同规则的概念.它将考虑2006年10月31日的夏令时,但实际上并非如此.

如果你只处理2007年之后的日期,那么你很好,不需要做任何特别的事情.如果您正在处理2006年或之前的日期,那么您需要检查年份,并手动应用DST偏移.

/sbin/ldconfig.real: /usr/local/lib/libcudnn.so.7 不是符号链接

/sbin/ldconfig.real: /usr/local/lib/libcudnn.so.7 不是符号链接

平台:Ubuntu 18 LTS 问题描述

/sbin/ldconfig.real: /usr/local/lib/libcudnn.so.7 不是符号链接

解决办法:建立软连接

sudo ln -sf /usr/local/lib/libcudnn.so.7.1.3 /usr/local/lib/libcudnn.so.7

Calendar.getInstance(TimeZone.getTimeZone(“ UTC”))没有返回UTC时间

Calendar.getInstance(TimeZone.getTimeZone(“ UTC”))没有返回UTC时间

我真的对Calendar.getInstance(TimeZone.getTimeZone("UTC"))方法调用的结果感到困惑,因为它返回了IST时间。

这是我使用的代码

Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));System.out.println(cal_Two.getTime());

我得到的答复是:

Sat Jan 25 15:44:18 IST 2014

所以我尝试将默认的TimeZone更改为UTC,然后检查了一下,然后工作正常

Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));System.out.println(cal_Two.getTime());TimeZone tz  = TimeZone.getDefault() ;TimeZone.setDefault(TimeZone.getTimeZone("UTC"));Calendar cal_Three = Calendar.getInstance();System.out.println(cal_Three.getTime());TimeZone.setDefault(tz);

结果:

Sat Jan 25 16:09:11 IST 2014Sat Jan 25 10:39:11 UTC 2014

我在这里想念什么吗?

答案1

小编典典

System.out.println(cal_Two.getTime())调用返回DategetTime()。正是它将Date转换为的字符串println,并且这种转换将使用IST您所用的默认时区。

您需要明确使用DateFormat.setTimeZone()Date在所需的时区中打印。

编辑:@Laurynas的礼貌,请考虑以下事项:

TimeZone timeZone = TimeZone.getTimeZone("UTC");Calendar calendar = Calendar.getInstance(timeZone);SimpleDateFormat simpleDateFormat =        new SimpleDateFormat("EE MMM dd HH:mm:ss zzz yyyy", Locale.US);simpleDateFormat.setTimeZone(timeZone);System.out.println("Time zone: " + timeZone.getID());System.out.println("default time zone: " + TimeZone.getDefault().getID());System.out.println();System.out.println("UTC:     " + simpleDateFormat.format(calendar.getTime()));System.out.println("Default: " + calendar.getTime());

Calendar.getInstance()getTime()返回的日期为“ GMT”,而不是默认的TimeZone

Calendar.getInstance()getTime()返回的日期为“ GMT”,而不是默认的TimeZone

Calendar c = Calendar.getInstance();
System.out.println(c.getTime());
c.set(2007,1);
System.out.println(c.getTime());

输出:

IST 2017年9月12日12:36:24

IST 2007年1月1日星期一12:36:24

但是,当我在不同的环境中使用相同的代码时,输​​出更改为以下内容:

输出:

IST 2017年9月12日12:36:24

2007年1月1日星期一格林尼治标准时间12:36:24

仅供参考,我尝试在设置值之前和之后打印日历实例的时区,并且两者都在“ IST”中。

我想知道这个的根本原因。

我们今天的关于centos – 当/ etc / localtime符号链接到/usr/share / zoneinfo / GMT时,为什么$date仍显示EST?的分享就到这里,谢谢您的阅读,如果想了解更多关于.net – Windows XP上的DateTime.ToLocalTime、/sbin/ldconfig.real: /usr/local/lib/libcudnn.so.7 不是符号链接、Calendar.getInstance(TimeZone.getTimeZone(“ UTC”))没有返回UTC时间、Calendar.getInstance()getTime()返回的日期为“ GMT”,而不是默认的TimeZone的相关信息,可以在本站进行搜索。

本文标签: