TimeZoneInfo.FromSerializedString(String) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
문자열을 역직렬화하여 원래의 직렬화된 TimeZoneInfo 개체를 다시 만듭니다.
public:
static TimeZoneInfo ^ FromSerializedString(System::String ^ source);
public static TimeZoneInfo FromSerializedString (string source);
static member FromSerializedString : string -> TimeZoneInfo
Public Shared Function FromSerializedString (source As String) As TimeZoneInfo
매개 변수
- source
- String
serialize된 TimeZoneInfo 개체의 문자열 표현입니다.
반환
serialize된 원본 개체입니다.
예외
source
매개 변수가 Empty인 경우
source
매개 변수가 null 문자열인 경우
소스 매개 변수를 다시 TimeZoneInfo 개체로 역직렬화할 수 없는 경우
예제
다음 예제에서는 로컬 시스템에서 남극/남극 표준 시간대를 검색하려고 시도합니다. 실패 한 경우 코드를 애플리케이션 디렉터리에 있는 텍스트 파일에서 표준 시간대에 대 한 정보를 검색 하려고 시도 합니다. 이 시도가 실패하면 코드는 표준 시간대를 만들고 표준 시간대에 대한 정보를 텍스트 파일에 씁니다.
private TimeZoneInfo InitializeTimeZone()
{
TimeZoneInfo southPole = null;
// Determine if South Pole time zone is defined in system
try
{
southPole = TimeZoneInfo.FindSystemTimeZoneById("Antarctica/South Pole Standard Time");
}
// Time zone does not exist; create it, store it in a text file, and return it
catch
{
const string filename = @".\TimeZoneInfo.txt";
bool found = false;
if (File.Exists(filename))
{
StreamReader reader = new StreamReader(filename);
string timeZoneInfo;
while (reader.Peek() >= 0)
{
timeZoneInfo = reader.ReadLine();
if (timeZoneInfo.Contains("Antarctica/South Pole"))
{
southPole = TimeZoneInfo.FromSerializedString(timeZoneInfo);
reader.Close();
found = true;
break;
}
}
}
if (!found)
{
// Define transition times to/from DST
TimeZoneInfo.TransitionTime startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 10, 1, DayOfWeek.Sunday);
TimeZoneInfo.TransitionTime endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 3, DayOfWeek.Sunday);
// Define adjustment rule
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1989, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
// Create array for adjustment rules
TimeZoneInfo.AdjustmentRule[] adjustments = {adjustment};
// Define other custom time zone arguments
string displayName = "(GMT+12:00) Antarctica/South Pole";
string standardName = "Antarctica/South Pole Standard Time";
string daylightName = "Antarctica/South Pole Daylight Time";
TimeSpan offset = new TimeSpan(12, 0, 0);
southPole = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments);
// Write time zone to the file
StreamWriter writer = new StreamWriter(filename, true);
writer.WriteLine(southPole.ToSerializedString());
writer.Close();
}
}
return southPole;
}
let initializeTimeZone () =
// Determine if South Pole time zone is defined in system
try
TimeZoneInfo.FindSystemTimeZoneById "Antarctica/South Pole Standard Time"
// Time zone does not exist create it, store it in a text file, and return it
with _ ->
let filename = @".\TimeZoneInfo.txt"
let mutable southPole = Unchecked.defaultof<TimeZoneInfo>
let mutable found = false
if File.Exists filename then
use reader = new StreamReader(filename)
while reader.Peek() >= 0 && not found do
let timeZoneInfo = reader.ReadLine()
if timeZoneInfo.Contains "Antarctica/South Pole" then
southPole <- TimeZoneInfo.FromSerializedString timeZoneInfo
reader.Close()
found <- true
if not found then
// Define transition times to/from DST
let startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 10, 1, DayOfWeek.Sunday)
let endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 3, 3, DayOfWeek.Sunday)
// Define adjustment rule
let delta = TimeSpan(1, 0, 0)
let adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1989, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition)
// Create array for adjustment rules
let adjustments = [| adjustment |]
// Define other custom time zone arguments
let displayName = "(GMT+12:00) Antarctica/South Pole"
let standardName = "Antarctica/South Pole Standard Time"
let daylightName = "Antarctica/South Pole Daylight Time"
let offset = TimeSpan(12, 0, 0)
southPole <- TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments)
// Write time zone to the file
use writer = new StreamWriter(filename, true)
writer.WriteLine(southPole.ToSerializedString())
southPole
Private Function InitializeTimeZone() As TimeZoneInfo
Dim southPole As TimeZoneInfo = Nothing
' Determine if South Pole time zone is defined in system
Try
southPole = TimeZoneInfo.FindSystemTimeZoneById("Antarctica/South Pole Standard Time")
' Time zone does not exist; create it, store it in a text file, and return it
Catch e As TimeZoneNotFoundException
Dim found As Boolean
Const filename As String = ".\TimeZoneInfo.txt"
If File.Exists(filename) Then
Dim reader As StreamReader = New StreamReader(fileName)
Dim timeZoneString As String
Do While reader.Peek() >= 0
timeZoneString = reader.ReadLine()
If timeZoneString.Contains("Antarctica/South Pole") Then
southPole = TimeZoneInfo.FromSerializedString(timeZoneString)
reader.Close()
found = True
Exit Do
End If
Loop
End If
If Not found Then
' Define transition times to/from DST
Dim startTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00#, 10, 1, DayOfWeek.Sunday)
Dim endTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00#, 3, 3, DayOfWeek.Sunday)
' Define adjustment rule
Dim delta As TimeSpan = New TimeSpan(1, 0, 0)
Dim adjustment As TimeZoneInfo.AdjustmentRule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#10/01/1989#, Date.MaxValue.Date, delta, startTransition, endTransition)
' Create array for adjustment rules
Dim adjustments() As TimeZoneInfo.AdjustmentRule = {adjustment}
' Define other custom time zone arguments
Dim displayName As String = "(GMT+12:00) Antarctica/South Pole"
Dim standardName As String = "Antarctica/South Pole Standard Time"
Dim daylightName As String = "Antarctica/South Pole Daylight Time"
Dim offset As TimeSpan = New TimeSpan(12, 0, 0)
southPole = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments)
' Write time zone to the file
Dim writer As StreamWriter = New StreamWriter(filename, True)
writer.WriteLine(southPole.ToSerializedString())
writer.Close()
End If
End Try
Return southPole
End Function
설명
Windows의 레지스트리 또는 Linux 및 macOS의 ICU 라이브러리 에서 찾을 수 없는 표준 시간대를 만드는 데 필요한 모든 코드를 제공하는 대안이 있습니다. 사용자 지정 표준 시간대 및 중 하나를 정의할 수 있습니다 사용 하 여는 ToSerializedString 메서드를 독립 실행형 실행 파일 또는 사용 하 여 애플리케이션 설치 프로그램에서 표준 시간대를 문자열로 저장 합니다. 다음 스토리지 위치에서이 문자열을 검색 하 고 사용 하 여 인스턴스화할 수 애플리케이션을 FromSerializedString 메서드.
적용 대상
추가 정보
.NET