May 12
Visual Basic è dotato di una serie di strumenti per l'analisi dei fusi orari. Il "TimeZoneInfo" tipo di variabile consente di definire i fusi orari specifici come variabili. Le operazioni consentono di controllare il tempo in questi vari fusi orari e convertire questi tempi per le proprie variabili. Un gruppo separato di operazioni di manipolare orari e le date, trovare la differenza tra i due tempi definiti dai diversi fusi orari.
1 Creare un programma di Visual Basic dal seguente codice di Microsoft per elencare gli ID di fuso orario del Registro di sistema:
Le importazioni System.Collections.ObjectModel
Le importazioni System.Globalization
Imports System.IO
Modulo Esempio
Public Sub Main ()
Const OUTPUTFILENAME As String = "C:\Temp\TimeZoneInfo.txt"
fusi orari fioco come ReadOnlyCollection (Di TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones ()
sw fioco come StreamWriter = Nuovo StreamWriter (OutputFileName, False)
Per ogni fuso orario Come TimeZoneInfo in fusi orari
Dim hasDST come booleano = timeZone.SupportsDaylightSavingTime
Dim offsetFromUtc Come TimeSpan = timeZone.BaseUtcOffset
adjustRules Dim () come System.TimeZoneInfo.AdjustmentRule
Dim offsetString As String
sw.WriteLine ( "ID: {0}", timeZone.Id)
sw.WriteLine ( "Display Name: {0, 40}", timeZone.DisplayName)
sw.WriteLine ( "Nome standard: {0, 39}", timeZone.StandardName)
sw.Write ( "Daylight Nome: {0, 39}", timeZone.DaylightName)
sw.Write (IIF (hasDST, "*** dispone", "*** non ha"))
sw.WriteLine ( "ora legale ***")
offsetString = String.Format ( "{0} ore, {1} minuti", offsetFromUtc.Hours, offsetFromUtc.Minutes)
sw.WriteLine ( "offset da UTC: {0, 40}", offsetString)
adjustRules = timeZone.GetAdjustmentRules ()
sw.WriteLine ( "Numero di norme di regolazione: {0, 26}", adjustRules.Length)
Se adjustRules.Length> 0 Then
sw.WriteLine ( "Regole di regolazione:")
Per ogni regola Come TimeZoneInfo.AdjustmentRule In adjustRules
Dim transTimeStart Come TimeZoneInfo.TransitionTime = rule.DaylightTransitionStart
Dim transTimeEnd Come TimeZoneInfo.TransitionTime = rule.DaylightTransitionEnd
sw.WriteLine ( "Da {0} a {1}", rule.DateStart, rule.DateEnd)
sw.WriteLine ( "Delta: {0}", rule.DaylightDelta)
Se non transTimeStart.IsFixedDateRule
sw.WriteLine ( "inizia alle {0: t} il {1} di {2 settimane} di {3}", transTimeStart.TimeOfDay, _
transTimeStart.DayOfWeek, _
transTimeStart.Week, _
MonthName (transTimeStart.Month))
sw.WriteLine ( "Ritorna al {0: t} il {1} di {2 settimane} di {3}", transTimeEnd.TimeOfDay, _
transTimeEnd.DayOfWeek, _
transTimeEnd.Week, _
MonthName (transTimeEnd.Month))
Altro
sw.WriteLine ( "inizia alle {0: t} il {1} {2}", transTimeStart.TimeOfDay, _
transTimeStart.Day, _
MonthName (transTimeStart.Month))
sw.WriteLine ( "Ritorna al {0: t} il {1} {2}", transTimeEnd.TimeOfDay, _
transTimeEnd.Day, _
MonthName (transTimeEnd.Month))
Finisci se
Il prossimo
Finisci se
Il prossimo
sw.Close ()
2 Creare il seguente programma Visual Basic:
Public Sub condivisa () principale
Dim timeZone1 As TimeZoneInfo
timeZone1 = TimeZoneInfo.FindSystemTimeZoneByID ( "Pacific Standard Time")
Dim timeZone2 Come TimeZoneInfo
timeZone2 = TimeZoneInfo.FindSydtemTimeZoneByID ( "Mountain Standard Time")
differenza Dim As Long = DateDiff (DateInterval.Hour, 1stTimeZone.StandardTime, 2ndTimeZone.StandardTime)
Console.WriteLine (differenza)
3 Sostituire "Pacific Standard Time" con la prima fuso orario che si desidera confrontare, avendo cura di riprodurre esattamente l'ID dalla lista dal punto 1.
4 Sostituire "Montagna standard Time" con il secondo fuso orario che si desidera confrontare.
5 Eseguire il programma.