...

Source file src/github.com/Microsoft/hcsshim/internal/uvm/timezone.go

Documentation: github.com/Microsoft/hcsshim/internal/uvm

     1  //go:build windows
     2  
     3  package uvm
     4  
     5  import (
     6  	"fmt"
     7  
     8  	hcsschema "github.com/Microsoft/hcsshim/internal/hcs/schema2"
     9  	"golang.org/x/sys/windows"
    10  )
    11  
    12  // UTC has everything set to 0's. Just need to fill in the pointer fields and string identifiers.
    13  var utcTimezone = &hcsschema.TimeZoneInformation{
    14  	StandardName: "Coordinated Universal Time",
    15  	DaylightName: "Coordinated Universal Time",
    16  	StandardDate: &hcsschema.SystemTime{},
    17  	DaylightDate: &hcsschema.SystemTime{},
    18  }
    19  
    20  // getTimezone returns the hosts timezone in an HCS TimeZoneInformation structure and an error if there
    21  // is one.
    22  func getTimezone() (*hcsschema.TimeZoneInformation, error) {
    23  	var tz windows.Timezoneinformation
    24  	_, err := windows.GetTimeZoneInformation(&tz)
    25  	if err != nil {
    26  		return nil, fmt.Errorf("failed to get time zone information: %w", err)
    27  	}
    28  	return tziToHCSSchema(&tz), nil
    29  }
    30  
    31  // TZIToHCSSchema converts a windows.TimeZoneInformation (TIME_ZONE_INFORMATION) to the hcs schema equivalent.
    32  func tziToHCSSchema(tzi *windows.Timezoneinformation) *hcsschema.TimeZoneInformation {
    33  	return &hcsschema.TimeZoneInformation{
    34  		Bias:         tzi.Bias,
    35  		StandardName: windows.UTF16ToString(tzi.StandardName[:]),
    36  		StandardDate: &hcsschema.SystemTime{
    37  			Year:         int32(tzi.StandardDate.Year),
    38  			Month:        int32(tzi.StandardDate.Month),
    39  			DayOfWeek:    int32(tzi.StandardDate.DayOfWeek),
    40  			Day:          int32(tzi.StandardDate.Day),
    41  			Hour:         int32(tzi.StandardDate.Hour),
    42  			Second:       int32(tzi.StandardDate.Second),
    43  			Minute:       int32(tzi.StandardDate.Minute),
    44  			Milliseconds: int32(tzi.StandardDate.Milliseconds),
    45  		},
    46  		StandardBias: tzi.StandardBias,
    47  		DaylightName: windows.UTF16ToString(tzi.DaylightName[:]),
    48  		DaylightDate: &hcsschema.SystemTime{
    49  			Year:         int32(tzi.DaylightDate.Year),
    50  			Month:        int32(tzi.DaylightDate.Month),
    51  			DayOfWeek:    int32(tzi.DaylightDate.DayOfWeek),
    52  			Day:          int32(tzi.DaylightDate.Day),
    53  			Hour:         int32(tzi.DaylightDate.Hour),
    54  			Second:       int32(tzi.DaylightDate.Second),
    55  			Minute:       int32(tzi.DaylightDate.Minute),
    56  			Milliseconds: int32(tzi.DaylightDate.Milliseconds),
    57  		},
    58  		DaylightBias: tzi.DaylightBias,
    59  	}
    60  }
    61  

View as plain text