世界協定時刻(回答)
答え
A
解説
A
A.
は、DateTimeStyles
のうち、DateTimeStyles.AdjustToUniversal
とDateTimeStyles.AssumeLocal
が|
を使って設定されています。
DateTimeStyles.AdjustToUniversal
では、日時を世界協定時刻(UTC)で返します。
また、入力文字列がタイムゾーン指定子または AssumeLocal で現地時刻を示す場合には、日付と時刻は現地時刻から UTC に変換されます。
DateTimeStyles.AssumeLocal
は、解析された文字列でタイム ゾーンが指定されていない場合、その文字列は現地時間を示すものと見なされます。
また、TryParse
メソッドを使うことでフォーマットが正しくない場合にも例外エラーは発生しません。
B
B.
は、DateTimeStyles
のうち、DateTimeStyles.AssumeUniversal
が設定されています。
これは、解析された文字列でタイムゾーンが指定されていない場合には、その文字列はUTCを示すものとしてみなされます。
これでは、「ユーザーは、ローカル・フォーマットに従った日付を入力します。
」と「入力された日付を検証し、世界協定時刻(UTC)に変換する必要があります。
」の条件を満たさず、正しい結果が取得できません。
実際に、「2019年02月15日 18時12分
」を変換させた場合、結果は「2019年02月16日 03時12分
」が返されます。
C
C.
は、「入力された日付を検証し、世界協定時刻(UTC)に変換する必要があります。
」の条件を満たしません。
また、このコードではParse
メソッドにフォーマットが正しくない値を渡した場合に例外エラーが発生します。
そのため、try-catch
を用いることでvalidDate
に変換結果を格納しています。
しかし、このように例外エラーを無意味に握りつぶさなくても、TryParse
メソッドを使うことで簡単に実現することが可能です。
実際に、「2019年02月15日 18時12分
」を変換させた場合、結果は「2019年02月15日 18時12分
」が返されます。
D
D.
は、指定されたフォーマットと完全に一致する必要があるため、フォーマット以外を指定するとSystem.FormatException
エラーが発生します。
また、DateTimeStyles
のうち、DateTimeStyles.AssumeUniversal
が設定されています。
これは、解析された文字列でタイムゾーンが指定されていない場合には、その文字列はUTCを示すものとしてみなされます。
このため、「入力された日付を検証し、世界協定時刻(UTC)に変換する必要があります。
」の条件を満たしません。
実際に、「2019年02月15日 18時12分
」を変換させた場合、System.FormatException
エラーが発生します。
参考
Last updated