DateTime.Kind Property
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.
Assembly: mscorlib (in mscorlib.dll)
You can explicitly set the Kind property of a new DateTime value to a particular DateTimeKind value by calling the SpecifyKind method.
The Kind property allows a DateTime value to clearly reflect either Coordinated Universal Time (UTC) or the local time. In contrast, the DateTimeOffset structure can unambiguously reflect any time in any time zone as a single point in time.
The following example uses the SpecifyKind method to demonstrate how the Kind property influences the ToLocalTime and ToUniversalTime conversion methods.
' This code example demonstrates the DateTime Kind, Now, and ' UtcNow properties, and the SpecifyKind(), ToLocalTime(), ' and ToUniversalTime() methods. Class Example Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock) ' Get the date and time for the current moment, adjusted ' to the local time zone. Dim saveNow As DateTime = DateTime.Now ' Get the date and time for the current moment expressed ' as coordinated universal time (UTC). Dim saveUtcNow As DateTime = DateTime.UtcNow Dim myDt As DateTime ' Display the value and Kind property of the current moment ' expressed as UTC and local time. DisplayNow(outputBlock, "UtcNow: ..........", saveUtcNow) DisplayNow(outputBlock, "Now: .............", saveNow) outputBlock.Text &= vbCrLf ' Change the Kind property of the current moment to ' DateTimeKind.Utc and display the result. myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc) Display(outputBlock, "Utc: .............", myDt) ' Change the Kind property of the current moment to ' DateTimeKind.Local and display the result. myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local) Display(outputBlock, "Local: ...........", myDt) ' Change the Kind property of the current moment to ' DateTimeKind.Unspecified and display the result. myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified) Display(outputBlock, "Unspecified: .....", myDt) End Sub 'Main ' Display the value and Kind property of a DateTime structure, the ' DateTime structure converted to local time, and the DateTime ' structure converted to universal time. Public Shared datePatt As String = "M/d/yyyy hh:mm:ss tt" Public Shared Sub Display(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal title As String, ByVal inputDt As DateTime) Dim dispDt As DateTime = inputDt Dim dtString As String ' Display the original DateTime. dtString = dispDt.ToString(datePatt) outputBlock.Text += String.Format("{0} {1}, Kind = {2}", title, dtString, dispDt.Kind) & vbCrLf ' Convert inputDt to local time and display the result. ' If inputDt.Kind is DateTimeKind.Utc, the conversion is performed. ' If inputDt.Kind is DateTimeKind.Local, the conversion is not performed. ' If inputDt.Kind is DateTimeKind.Unspecified, the conversion is ' performed as if inputDt was universal time. dispDt = inputDt.ToLocalTime() dtString = dispDt.ToString(datePatt) outputBlock.Text += String.Format(" ToLocalTime: {0}, Kind = {1}", dtString, dispDt.Kind) & vbCrLf ' Convert inputDt to universal time and display the result. ' If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed. ' If inputDt.Kind is DateTimeKind.Local, the conversion is performed. ' If inputDt.Kind is DateTimeKind.Unspecified, the conversion is ' performed as if inputDt was local time. dispDt = inputDt.ToUniversalTime() dtString = dispDt.ToString(datePatt) outputBlock.Text += String.Format(" ToUniversalTime: {0}, Kind = {1}", dtString, dispDt.Kind) & vbCrLf outputBlock.Text &= vbCrLf End Sub 'Display ' Display the value and Kind property for DateTime.Now and DateTime.UtcNow. Public Shared Sub DisplayNow(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal title As String, ByVal inputDt As DateTime) Dim dtString As String = inputDt.ToString(datePatt) outputBlock.Text += String.Format("{0} {1}, Kind = {2}", title, dtString, inputDt.Kind) & vbCrLf End Sub 'DisplayNow End Class 'Sample ' 'This code example produces the following results: ' 'UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc 'Now: ............. 5/6/2005 02:34:42 PM, Kind = Local ' 'Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc ' ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local ' ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc ' 'Local: ........... 5/6/2005 02:34:42 PM, Kind = Local ' ToLocalTime: 5/6/2005 02:34:42 PM, Kind = Local ' ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc ' 'Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified ' ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local ' ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc '