2017-11-01 4 views
0

バイト配列に現在の日付と時刻をYYMMDDHHmmの形式で入力しようとしています。 しかし、DateTime.Now.DayまたはDateTime.Now.Monthまたはこれらのメソッドのいずれかがintを返します。これは最終的に私のコードでnull参照例外を発生させます(たとえば、 "day"の値が10より小さい場合、参照する2番目のバイト)。ASCIIエンコーディングでDateTime.Nowを使用してバイト配列を設定する

 DATETIME[0] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Year.ToString())[2]; 
     DATETIME[1] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Year.ToString())[3]; 
     DATETIME[2] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Month.ToString())[0]; 
     DATETIME[3] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Month.ToString())[1]; 
     DATETIME[4] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Day.ToString())[0]; 
     DATETIME[5] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Day.ToString())[1]; 
     DATETIME[6] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Hour.ToString())[0]; 
     DATETIME[7] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Hour.ToString())[1]; 
     DATETIME[8] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Minute.ToString())[0]; 
     DATETIME[9] = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.Minute.ToString())[1]; 

これはおそらく愚かなものになるつもりですが、誰もがあればのの束を使用せずに、バイト配列内のこの右の値を取得する方法のいずれかのアイデアを持っているのでしょうか? 012] [01] [17] [18] [19] [22] [22] [23] [22] [23]符号化)

+2

プットfomrat:ToStringメソッド(「YYMMDDHHMM」) – jdweng

+2

サイドノート:私は強くあなたが一度 'DateTime.Now'を呼び出し、ローカル変数に結果を格納することをお勧めしたいです。コードが作業の途中にある間に、それらのコンポーネントの1つ(またはそれ以上)が新しい値*に移動するとどうなるか考えてみてください。 –

+0

@jdwengは魅力的に働いた!おかげでたくさんの友人 – amorimph

答えて

0
System.Text.Encoding.ASCII.GetBytes(DateTime.Now.ToString("yyMMddhhmm")); 
0

試行:

Encoding.ASCII.GetBytes(String.Formatの( "{0:S}"、DateTime.Now))。

などの形式では、「2008-03-09T16:05:07」と表示されるので、ちょっとした調整が必要です。 ToStringメソッドへの

+0

"{0:dd}/{0:MM}/{0:yyyy} {0:hh}:{0:mm}"、 "DateTime.Now"あなたが望むフォーマット。 – user8867630

関連する問題