2017-02-17 7 views
0

"25/12/2017 4:00 PM"から"12/25/2017 4:00 PM"のように文字列を変換します。私のコード:dd/MM/yyyy HH:mm ttをMM/dd/yyyyに変換します。HH:mm tt in C#

var TDXRSC = "25/12/2017 4:00 PM"; 
DateTime.ParseExact(TDXRSC, "dd/MM/yyyy hh:mm tt", CultureInfo.InvariantCulture); 

しかし、それは動作していません。

+1

"しかし、それは働いていない。" はどのような平均? – Enigmativity

+0

あなたは単にdd/MM/yyyy h:mm tt "" 'が必要だと思います。 – Enigmativity

答えて

2

予想される日付形式はdd/MM/yyyy hh:mm ttですが、参照日付は1桁の数字の場合は4です。数日、数ヶ月、または数時間、先行ゼロを期待しない方がよいでしょう。

てみてください。..

var TDXRSC = "25/12/2017 4:00 PM"; 
var input = DateTime.ParseExact(TDXRSC, "dd/MM/yyyy h:mm tt", CultureInfo.InvariantCulture); 

また、これはまだ2桁の時間を解析します。したがって、var TDXRSC = "25/12/2017 12:00 PM";はまだ正しく解析されます。

+0

私はそれを得た。ありがとう、@ニコ。 –

+0

@ Ken99良い仕事。先頭の0または1桁の値がないという別のシナリオを試すことをおすすめします。月と日は将来問題を引き起こす可能性があります – Nico

0
var TDXRSC = "25/12/2017 4:00 PM"; 
var input = DateTime.ParseExact(TDXRSC, "dd/MM/yyyy h:mm tt", CultureInfo.InvariantCulture); 
var output = input.ToString("MM/dd/yyyy h:mm tt"); 

ParseExactを呼び出すと、受信日がどのような形式であるかコンパイラに伝えられます。次に、ToString()メソッドを使用して、解析された日付の文字列表現の形式を指定できます。

+0

このコードをテストしましたか? 'FormatException:文字列が有効なDateTimeとして認識されませんでした。 ' – Enigmativity

+0

ParseExactを呼び出すと、「文字列が有効な日時として認識されませんでした」 –

+0

@Enigmativityコードは問題ありません。コンセプトは健全です – CynePhoba12

0

.TryParseExtractは、変換のために使用することがより安全で、次のように使用することを希望:

var dateString = "25/12/2017 4:00 PM"; 
DateTime inputDate; 
if(DateTime.TryParseExact(dateString, "dd/MM/yyyy h:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out inputDate)) 
{ 
    var output = inputDate.ToString("MM/dd/yyyy hh:mm tt"); 
    Console.WriteLine(output); 
} 
else 
{ 
    Console.WriteLine("Conversion failed"); 
} 

Working Example

0
var TDXRSC = "25/12/2017 4:00 PM"; 
DateTime date = Convert.ToDateTime(TDXRSC); 
string Format = date.ToString("MM/dd/yyyy h:mm tt"); 
関連する問題