Я только что столкнулся с проблемой при использовании данных, которые Azure Maps предоставляет для часовых поясов, чтобы попытаться получить местное время в SQL Server (Azure SQL), используя AT TIME ZONE
.
Когда я предоставляю данные широты и долготы в Azure Maps для местоположения на Гавайях, в ответе указывается «Гавайско-алеутское стандартное время»:
"Names":{
"ISO6391LanguageCode":"en",
"Generic":"Hawaii-Aleutian Time",
"Standard":"Hawaii-Aleutian Standard Time",
"Daylight":"Hawaii-Aleutian Daylight Time"
},
В другой части моей системы мне нужновозможность определить местное время для этого местоположения в SQL Server, поэтому я использую AT TIME ZONE
и внедряю стандартный часовой пояс.Это прекрасно работает для часовых поясов США, с которыми я имею дело, таких как «Восточное стандартное время» или «Центральное стандартное время».Когда он попадает в гавайское местоположение ... он выдает ошибку и говорит, что это недопустимый часовой пояс.
Просматривая списки часовых поясов, которые мне удалось найти в Интернете для SQL Server, выясняется, чтоЧасовой пояс Гавайев в SQL - это «Гавайское стандартное время».
Кто-нибудь еще сталкивался с этим разъединением?
Думаю, мне нужно исправить код исключения, чтобы заменить этот часовой пояс, предоставленный Azure, на "Гавайское стандартное время".Есть ли лучшее решение?
Для справки вот пример URL (минус ключ): https://atlas.microsoft.com/timezone/byCoordinates/json?subscription-key={key}&api-version=1.0&options=all&query=21.4500,-158.0054
Вот полный JSON-ответ:
{
"Version": "2018g",
"ReferenceUtcTimestamp": "2018-12-08T17:10:31.8007137Z",
"TimeZones": [
{
"Id": "Pacific/Honolulu",
"Aliases": [
"Pacific/Johnston",
"US/Hawaii"
],
"Countries": [
{
"Name": "United States",
"Code": "US"
},
{
"Name": "US minor outlying islands",
"Code": "UM"
}
],
"Names": {
"ISO6391LanguageCode": "en",
"Generic": "Hawaii-Aleutian Time",
"Standard": "Hawaii-Aleutian Standard Time",
"Daylight": "Hawaii-Aleutian Daylight Time"
},
"ReferenceTime": {
"Tag": "HST",
"StandardOffset": "-10:00:00",
"DaylightSavings": "00:00:00",
"WallTime": "2018-12-08T07:10:31.8007137-10:00",
"PosixTzValidYear": 2018,
"PosixTz": "HST+10"
},
"RepresentativePoint": {
"Latitude": 21.306944444444444,
"Longitude": -157.85833333333332
},
"TimeTransitions": [
{
"Tag": "HST",
"StandardOffset": "-10:00:00",
"DaylightSavings": "00:00:00",
"UtcStart": "1947-06-08T12:30:00Z",
"UtcEnd": "9999-12-31T23:59:59.9999999Z"
}
]
}
]
}