Как получить правильный часовой пояс (часовой пояс сервера) из формата даты UTC? - PullRequest
1 голос
/ 25 августа 2010

Как следует из приведенной ниже ссылки.

Как отформатировать эту дату типа 2010-06-24T00: 00: 00Z до вс, 24/06/10 19.15 (CDT) с использованием JavaScriptили jquery

Я конвертирую формат даты utc в простой формат даты:

2010-06-24T00: 00: 00Z до вс, 24/06/10 19.15 (CDT) (преобразованное время)

Но есть ли способ определить действительный часовой пояс, так как приведенное выше преобразование всегда обнаруживает часовой пояс на основе клиентского компьютера.Или мы не можем определить действительный часовой пояс по UTC?

Ответы [ 3 ]

0 голосов
/ 25 августа 2010

Вы не определили, что вы подразумеваете под "действительным часовым поясом" - вы имеете в виду местный часовой пояс? (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;
}
0 голосов
/ 04 ноября 2014

Вы можете использовать приведенный ниже код в 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();
0 голосов
/ 25 августа 2010

UTC не имеет часового пояса, он «универсальный», потому что он всегда один и тот же, независимо от того, где вы находитесь. Информация о часовом поясе должна быть определена наблюдателем.

...