TimeZoneInfo.GetUtcOffset Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вычисляет для определенной даты и времени смещение или разность между временем в данном часовом поясе и временем в формате UTC.
Перегрузки
GetUtcOffset(DateTime) |
Вычисляет для определенной даты и времени смещение или разность между временем в данном часовом поясе и временем в формате UTC. |
GetUtcOffset(DateTimeOffset) |
Вычисляет для определенной даты и времени смещение или разность между временем в данном часовом поясе и временем в формате UTC. |
GetUtcOffset(DateTime)
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
Вычисляет для определенной даты и времени смещение или разность между временем в данном часовом поясе и временем в формате UTC.
public:
TimeSpan GetUtcOffset(DateTime dateTime);
public TimeSpan GetUtcOffset (DateTime dateTime);
member this.GetUtcOffset : DateTime -> TimeSpan
Public Function GetUtcOffset (dateTime As DateTime) As TimeSpan
Параметры
- dateTime
- DateTime
Дата и время, для которых необходимо определить смещение.
Возвращаемое значение
Объект, в котором указывается разность во времени между двумя часовыми поясами.
Примеры
В следующем примере показано использование GetUtcOffset(DateTime) метода с разными часовыми поясами и значениями даты, имеющими разные Kind значения свойств.
using System;
[assembly:CLSCompliant(true)]
namespace TimeZoneInfoCode
{
public class TimeOffsets
{
public static void Main()
{
TimeOffsets timeoff = new TimeOffsets();
TimeZoneInfo cst = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
timeoff.ShowOffset(new DateTime(2006, 6, 12, 11, 0, 0), TimeZoneInfo.Local);
timeoff.ShowOffset(new DateTime(2007, 11, 4, 1, 0, 0), TimeZoneInfo.Local);
timeoff.ShowOffset(new DateTime(2006, 12, 10, 15, 0, 0), TimeZoneInfo.Local);
timeoff.ShowOffset(new DateTime(2007, 3, 11, 2, 30, 0), TimeZoneInfo.Local);
timeoff.ShowOffset(DateTime.UtcNow, TimeZoneInfo.Local);
timeoff.ShowOffset(new DateTime(2006, 6, 12, 11, 0, 0), TimeZoneInfo.Utc);
timeoff.ShowOffset(new DateTime(2007, 11, 4, 1, 0, 0), TimeZoneInfo.Utc);
timeoff.ShowOffset(new DateTime(2006, 12, 10, 3, 0, 0), TimeZoneInfo.Utc);
timeoff.ShowOffset(new DateTime(2007, 3, 11, 2, 30, 0), TimeZoneInfo.Utc);
timeoff.ShowOffset(DateTime.Now, TimeZoneInfo.Utc);
timeoff.ShowOffset(new DateTime(2006, 6, 12, 11, 0, 0), cst);
timeoff.ShowOffset(new DateTime(2007, 11, 4, 1, 0, 0), cst);
timeoff.ShowOffset(new DateTime(2006, 12, 10, 15, 0, 0), cst);
timeoff.ShowOffset(new DateTime(2007, 3, 11, 2, 30, 0, 0), cst);
timeoff.ShowOffset(new DateTime(2007, 11, 14, 00, 00, 00, DateTimeKind.Local), cst);
}
private void ShowOffset(DateTime time, TimeZoneInfo timeZone)
{
DateTime convertedTime = time;
TimeSpan offset;
if (time.Kind == DateTimeKind.Local && ! timeZone.Equals(TimeZoneInfo.Local))
convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Local, timeZone);
else if (time.Kind == DateTimeKind.Utc && ! timeZone.Equals(TimeZoneInfo.Utc))
convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZone);
offset = timeZone.GetUtcOffset(time);
if (time == convertedTime)
{
Console.WriteLine("{0} {1} ", time,
timeZone.IsDaylightSavingTime(time) ? timeZone.DaylightName : timeZone.StandardName);
Console.WriteLine(" It differs from UTC by {0} hours, {1} minutes.",
offset.Hours,
offset.Minutes);
}
else
{
Console.WriteLine("{0} {1} ", time,
time.Kind == DateTimeKind.Utc ? "UTC" : TimeZoneInfo.Local.Id);
Console.WriteLine(" converts to {0} {1}.",
convertedTime,
timeZone.Id);
Console.WriteLine(" It differs from UTC by {0} hours, {1} minutes.",
offset.Hours, offset.Minutes);
}
Console.WriteLine();
}
}
}
// The example produces the following output:
//
// 6/12/2006 11:00:00 AM Pacific Daylight Time
// It differs from UTC by -7 hours, 0 minutes.
//
// 11/4/2007 1:00:00 AM Pacific Standard Time
// It differs from UTC by -8 hours, 0 minutes.
//
// 12/10/2006 3:00:00 PM Pacific Standard Time
// It differs from UTC by -8 hours, 0 minutes.
//
// 3/11/2007 2:30:00 AM Pacific Standard Time
// It differs from UTC by -8 hours, 0 minutes.
//
// 2/2/2007 8:35:46 PM UTC
// converts to 2/2/2007 12:35:46 PM Pacific Standard Time.
// It differs from UTC by -8 hours, 0 minutes.
//
// 6/12/2006 11:00:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 11/4/2007 1:00:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 12/10/2006 3:00:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 3/11/2007 2:30:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 2/2/2007 12:35:46 PM Pacific Standard Time
// converts to 2/2/2007 8:35:46 PM UTC.
// It differs from UTC by 0 hours, 0 minutes.
//
// 6/12/2006 11:00:00 AM Central Daylight Time
// It differs from UTC by -5 hours, 0 minutes.
//
// 11/4/2007 1:00:00 AM Central Standard Time
// It differs from UTC by -6 hours, 0 minutes.
//
// 12/10/2006 3:00:00 PM Central Standard Time
// It differs from UTC by -6 hours, 0 minutes.
//
// 3/11/2007 2:30:00 AM Central Standard Time
// It differs from UTC by -6 hours, 0 minutes.
//
// 11/14/2007 12:00:00 AM Pacific Standard Time
// converts to 11/14/2007 2:00:00 AM Central Standard Time.
// It differs from UTC by -6 hours, 0 minutes.
open System
let showOffset (time: DateTime) (timeZone: TimeZoneInfo) =
let convertedTime =
match time.Kind with
| DateTimeKind.Local when not (timeZone.Equals TimeZoneInfo.Local) ->
TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Local, timeZone)
| DateTimeKind.Utc when not (timeZone.Equals TimeZoneInfo.Utc) ->
TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZone)
| _ -> time
let offset = timeZone.GetUtcOffset time
if time = convertedTime then
printfn $"{time} {if timeZone.IsDaylightSavingTime time then timeZone.DaylightName else timeZone.StandardName} "
printfn $" It differs from UTC by {offset.Hours} hours, {offset.Minutes} minutes."
else
printfn $"""{time} {if time.Kind = DateTimeKind.Utc then "UTC" else TimeZoneInfo.Local.Id} """
printfn $" converts to {convertedTime} {timeZone.Id}."
printfn $" It differs from UTC by {offset.Hours} hours, {offset.Minutes} minutes."
printfn ""
let cst = TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time"
showOffset (DateTime(2006, 6, 12, 11, 0, 0)) TimeZoneInfo.Local
showOffset (DateTime(2007, 11, 4, 1, 0, 0)) TimeZoneInfo.Local
showOffset (DateTime(2006, 12, 10, 15, 0, 0)) TimeZoneInfo.Local
showOffset (DateTime(2007, 3, 11, 2, 30, 0)) TimeZoneInfo.Local
showOffset DateTime.UtcNow TimeZoneInfo.Local
showOffset (DateTime(2006, 6, 12, 11, 0, 0)) TimeZoneInfo.Utc
showOffset (DateTime(2007, 11, 4, 1, 0, 0)) TimeZoneInfo.Utc
showOffset (DateTime(2006, 12, 10, 3, 0, 0)) TimeZoneInfo.Utc
showOffset (DateTime(2007, 3, 11, 2, 30, 0)) TimeZoneInfo.Utc
showOffset DateTime.Now TimeZoneInfo.Utc
showOffset (DateTime(2006, 6, 12, 11, 0, 0)) cst
showOffset (DateTime(2007, 11, 4, 1, 0, 0)) cst
showOffset (DateTime(2006, 12, 10, 15, 0, 0)) cst
showOffset (DateTime(2007, 3, 11, 2, 30, 0, 0)) cst
showOffset (DateTime(2007, 11, 14, 00, 00, 00, DateTimeKind.Local)) cst
// The example produces the following output:
//
// 6/12/2006 11:00:00 AM Pacific Daylight Time
// It differs from UTC by -7 hours, 0 minutes.
//
// 11/4/2007 1:00:00 AM Pacific Standard Time
// It differs from UTC by -8 hours, 0 minutes.
//
// 12/10/2006 3:00:00 PM Pacific Standard Time
// It differs from UTC by -8 hours, 0 minutes.
//
// 3/11/2007 2:30:00 AM Pacific Standard Time
// It differs from UTC by -8 hours, 0 minutes.
//
// 2/2/2007 8:35:46 PM UTC
// converts to 2/2/2007 12:35:46 PM Pacific Standard Time.
// It differs from UTC by -8 hours, 0 minutes.
//
// 6/12/2006 11:00:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 11/4/2007 1:00:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 12/10/2006 3:00:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 3/11/2007 2:30:00 AM UTC
// It differs from UTC by 0 hours, 0 minutes.
//
// 2/2/2007 12:35:46 PM Pacific Standard Time
// converts to 2/2/2007 8:35:46 PM UTC.
// It differs from UTC by 0 hours, 0 minutes.
//
// 6/12/2006 11:00:00 AM Central Daylight Time
// It differs from UTC by -5 hours, 0 minutes.
//
// 11/4/2007 1:00:00 AM Central Standard Time
// It differs from UTC by -6 hours, 0 minutes.
//
// 12/10/2006 3:00:00 PM Central Standard Time
// It differs from UTC by -6 hours, 0 minutes.
//
// 3/11/2007 2:30:00 AM Central Standard Time
// It differs from UTC by -6 hours, 0 minutes.
//
// 11/14/2007 12:00:00 AM Pacific Standard Time
// converts to 11/14/2007 2:00:00 AM Central Standard Time.
// It differs from UTC by -6 hours, 0 minutes.
Option Strict On
<Assembly: CLSCompliant(True)>
Module TimeOffsets
Public Sub Main()
Dim cst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")
ShowOffset(#6/12/2006 11:00AM#, TimeZoneInfo.Local)
ShowOffset(#11/4/2007 1:00AM#, TimeZoneInfo.Local)
ShowOffset(#12/10/2006 3:00PM#, TimeZoneInfo.Local)
ShowOffset(#3/11/2007 2:30:00AM#, TimeZoneInfo.Local)
ShowOffset(Date.UtcNow, TimeZoneInfo.Local)
ShowOffset(#6/12/2006 11:00AM#, TimeZoneInfo.Utc)
ShowOffset(#11/4/2007 1:00AM#, TimeZoneInfo.Utc)
ShowOffset(#12/10/2006 3:00PM#, TimeZoneInfo.Utc)
ShowOffset(#3/11/2007 2:30:00AM#, TimeZoneInfo.Utc)
ShowOffset(Date.Now, TimeZoneInfo.Utc)
ShowOffset(#6/12/2006 11:00AM#, cst)
ShowOffset(#11/4/2007 1:00AM#, cst)
ShowOffset(#12/10/2006 3:00PM#, cst)
ShowOffset(#3/11/2007 2:30:00AM#, cst)
ShowOffset(New Date(2007, 11, 14, 00, 00, 00, DateTimeKind.Local), cst)
End Sub
Private Sub ShowOffset(time As Date, timeZone As TimeZoneInfo)
Dim convertedTime As Date = time
Dim offset As TimeSpan
If time.Kind = DateTimeKind.Local And Not timeZone.Equals(TimeZoneInfo.Local) Then
convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Local, timeZone)
ElseIf time.Kind = DateTimeKind.Utc And Not timeZone.Equals(TimeZoneInfo.Utc) Then
convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZone)
End If
offset = timeZone.GetUtcOffset(time)
If time = convertedTime Then
Console.WriteLine("{0} {1} ", time, _
IIf(timeZone.IsDaylightSavingTime(time), timeZone.DaylightName, timeZone.StandardName))
Console.WriteLine(" It differs from UTC by {0} hours, {1} minutes.", _
offset.Hours, _
offset.Minutes)
Else
Console.WriteLine("{0} {1} ", time, _
IIf(time.Kind = DateTimeKind.Utc, "UTC", TimeZoneInfo.Local.Id))
Console.WriteLine(" converts to {0} {1}.", _
convertedTime, _
timeZone.Id)
Console.WriteLine(" It differs from UTC by {0} hours, {1} minutes.", _
offset.Hours, offset.Minutes)
End If
Console.WriteLine()
End Sub
End Module
'
' The example produces the following output:
'
' 6/12/2006 11:00:00 AM Pacific Daylight Time
' It differs from UTC by -7 hours, 0 minutes.
'
' 11/4/2007 1:00:00 AM Pacific Standard Time
' It differs from UTC by -8 hours, 0 minutes.
'
' 12/10/2006 3:00:00 PM Pacific Standard Time
' It differs from UTC by -8 hours, 0 minutes.
'
' 3/11/2007 2:30:00 AM Pacific Standard Time
' It differs from UTC by -8 hours, 0 minutes.
'
' 2/2/2007 8:35:46 PM UTC
' converts to 2/2/2007 12:35:46 PM Pacific Standard Time.
' It differs from UTC by -8 hours, 0 minutes.
'
' 6/12/2006 11:00:00 AM UTC
' It differs from UTC by 0 hours, 0 minutes.
'
' 11/4/2007 1:00:00 AM UTC
' It differs from UTC by 0 hours, 0 minutes.
'
' 12/10/2006 3:00:00 AM UTC
' It differs from UTC by 0 hours, 0 minutes.
'
' 3/11/2007 2:30:00 AM UTC
' It differs from UTC by 0 hours, 0 minutes.
'
' 2/2/2007 12:35:46 PM Pacific Standard Time
' converts to 2/2/2007 8:35:46 PM UTC.
' It differs from UTC by 0 hours, 0 minutes.
'
' 6/12/2006 11:00:00 AM Central Daylight Time
' It differs from UTC by -5 hours, 0 minutes.
'
' 11/4/2007 1:00:00 AM Central Standard Time
' It differs from UTC by -6 hours, 0 minutes.
'
' 12/10/2006 3:00:00 PM Central Standard Time
' It differs from UTC by -6 hours, 0 minutes.
'
' 3/11/2007 2:30:00 AM Central Standard Time
' It differs from UTC by -6 hours, 0 minutes.
'
' 11/14/2007 12:00:00 AM Pacific Standard Time
' converts to 11/14/2007 2:00:00 AM Central Standard Time.
' It differs from UTC by -6 hours, 0 minutes.
Комментарии
Возвращаемый интервал времени включает любые различия из-за применения правил корректировки к текущему часовому поясу. Оно отличается от BaseUtcOffset свойства , которое возвращает разницу между временем в формате UTC и стандартным временем часового пояса и, следовательно, не учитывает правила корректировки.
dateTime
Если свойство параметра не соответствует объекту часового поясаKind, этот метод выполняет необходимое преобразование перед возвратом результата. Например, это может произойти, если Kind свойство имеет значение , DateTimeKind.Local но объект часового пояса не является местным часовой поясом. Если dateTime
является неоднозначным или если преобразованное время является неоднозначным, этот метод интерпретирует неоднозначное время как стандартное время. Если dateTime
параметр является недопустимым TimeSpan , этот метод возвращает объект , который отражает разницу между временем в формате UTC и часового пояса.
Метод TimeZoneInfo.GetUtcOffset(DateTime) аналогичен методу GetUtcOffsetTimeZone класса .
См. также раздел
Применяется к
GetUtcOffset(DateTimeOffset)
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
Вычисляет для определенной даты и времени смещение или разность между временем в данном часовом поясе и временем в формате UTC.
public:
TimeSpan GetUtcOffset(DateTimeOffset dateTimeOffset);
public TimeSpan GetUtcOffset (DateTimeOffset dateTimeOffset);
member this.GetUtcOffset : DateTimeOffset -> TimeSpan
Public Function GetUtcOffset (dateTimeOffset As DateTimeOffset) As TimeSpan
Параметры
- dateTimeOffset
- DateTimeOffset
Дата и время, для которых необходимо определить смещение.
Возвращаемое значение
Объект, в котором указывается разность между временем в формате UTC и временем в текущем часовом поясе.
Комментарии
Возвращаемый интервал времени включает любые различия из-за применения правил корректировки к текущему часовому поясу. Оно отличается от BaseUtcOffset свойства , которое возвращает разницу между временем в формате UTC и стандартным временем часового пояса и, следовательно, не учитывает правила корректировки.