DateTime・DateTimeOffsetの文字列化に際してローカライズされる書式があるのと同様、ParseメソッドでもDateTime・DateTimeOffsetへの変換の際にローカライズされているものとして解釈される場合があります。
分かりやすい例として、"1/2/3"
という文字列がja-JP(日本語/日本)・en-US(英語/アメリカ合衆国)・fr-FR(フランス語/フランス)の各環境ではどのように変換されるかその違いを見てみます。
上記のコードではThread.CurrentThreadを変更することで異なるカルチャに変更していますが、Thread.CurrentThreadのデフォルト値は実行環境によって異なるカルチャとなるため、つまり、実行環境によってParseメソッドの結果は異なることになります。 上記の例で言えば"1/2/3"
という文字列は、ja-JPの環境では "(200)1年/2月/3日"、en-USの環境では "1月/2日/(200)3年"、fr-FRの環境では "1日/2月/(200)3年" として解釈されます。 このように、Parseメソッドに渡す文字列によっては、実行環境・カルチャによって解析結果が異なる場合がある点に注意する必要があります。