2017-12-07 22 views
1

私は次の文字列"2017-2"を持っており、"2017-02"とフォーマットする必要があります。数字と文字を含む文字列をフォーマットする方法

var period = "2017-2"; 
var periodFormatted = String.Format("{0:0000-00}", period); 

periodFormattedは

"2017-02"としてフォーマット期間を取得するための正しい構文は何ですか"2017-2"を返しますか?

+0

はmeaningless.The方法の説明です。あなたが持っているものは期間ではなく、誰かが期間として解釈しても解釈しなくてもよい文字列です。 –

+0

DateTimeのインスタンスを使用してみませんか?そこに期間を読み込むと 'dateTimeInstance.ToString(あなたの書式") '(あなたの場合はyyyy-MM)を使うことができます – Dragonvil

+0

*ピリオド*を表現したい場合は、構造体やタプル年と月を含む。 DateTimeを使用して日の部分を無視することもできます –

答えて

2

string.Formatは、あなたの文字列に数字が含まれていることを知らない(または気にする)ので、あなたはそのように直接フォーマットすることはできません。あなたは文字列を分割し、最後の部分を数字として解析することもできます。たとえば:

var period = "2017-2"; 
var parts = period.Split('-');; 
var periodFormatted = $"{parts[0]}-{int.Parse(parts[1]):D2}"; 

しかし、あなたはおそらく書式設定些細をしただろうと、最初の場所に適切なDateTimeオブジェクト(または年と月の値を表すカスタム型)としてperiod値を持つ必要があります。

1

入力-をDateTimeとして解析し、2番目の手順でフォーマットすることができます。

string period = "2017-2"; 
DateTime temp = DateTime.ParseExact(period, "yyyy-M", CultureInfo.InvariantCulture); 
string result = temp.ToString("yyyy-MM"); 

注:M0を招くことなく、月を定義し、MMは常に2桁の月です。

参考: `指定されたフォーマットに基づいて文字列へのオブジェクトの値を変換し、別のstring.`にそれらを挿入します。文字列のString.Formatのを呼び出すhttps://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

関連する問題