如何从UTC日期格式获取正确的时区(服务器时区)?

时间:2010-08-24 23:29:33

标签: date format utc

作为以下链接的后续内容。

How to format this date type 2010-06-24T00:00:00Z to sun,24/06/10 7.15 p.m (CDT) using javascript or jquery

我正在将utc日期格式转换为简单的日期格式:

2010-06-24T00:00:00Z to sun,24/06/10 7.15 p.m(CDT)(转换时间)

但是有没有办法识别有效时区,因为上述转换始终会根据客户端计算机检测时区。或者我们无法从UTC检测到有效时区?

3 个答案:

答案 0 :(得分:0)

UTC没有时区,它是“通用的”,因为无论你身在何处,它都是一样的。时区信息必须由观察员确定。

答案 1 :(得分:0)

您没有定义“有效时区”的含义 - 您的意思是本地时区吗? (毕竟UTC是一个完全有效的时区 - 或者至少是你在西欧时区,而不是英国夏令时......)

如果您有UTC日期,并且想要将其转换为当地时区的日期,那很简单:

function UTCtoLocal(inDate) {
    // inDate can be null, a string or an object
    // if it's an object, it can be a date or event

    var localDate = new Date();
    var utcDate = new Date().toUTCString();

    if (inDate) {
        if (typeof inDate == "string") {
            utcDate = inDate;
        }
        else { 
            if (inDate.getDay) { // is it really a date?
                utcDate = inDate.toString();
            }
        }
    }

    utcDate = utcDate.substr(0, utcDate.length-3);
    localDate.setTime(Date.parse(utcDate));
    return localDate;
}

答案 2 :(得分:0)

您可以使用C#中的以下代码通过传递时区值来获取日期(例如:+08:00:00)

Console.WriteLine("Enter the Time zone: ");
            string zoneInfo = Console.ReadLine();
            int Flags = 0;
            ReadOnlyCollection<TimeZoneInfo> zones = TimeZoneInfo.GetSystemTimeZones();
            string myTime = "";
            string displayName = "";
            foreach (var timeZoneInfo in zones)
            {
                if (timeZoneInfo.BaseUtcOffset`enter code here`.ToString().Equals(zoneInfo))
                {
                    string timeZoneId = timeZoneInfo.Id;`enter code here`
                    myTime = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById(timeZoneId)).ToString();
                    displayName = timeZoneInfo.DaylightName.ToString();
                    break;
                }
            }
            Console.WriteLine(displayName + ":" + myTime);
            Console.ReadLine();