2017-12-19 24 views
0

いくつかの状態で1つのファイルを特定のスペースに保存します。だから、私は創造の時代にそれを刻んで、互いに伝えることを考えました。ファイル名の文字列にDateTime.ToFileTimeとFromFileTimeを使用します。

私は完全なプログラムと全く同じ手順を経るが、集中したダミープログラムを作成しました。ここで

コードです:

DateTime first = DateTime.Now; 
     long ft = first.ToFileTime(); 
     string time = "" + ft; 
     long timeLong = Convert.ToInt64(time); 

     DateTime normalDate = DateTime.FromFileTime(timeLong); 
     string normalName = ""+ normalDate; 
     DateTime thisDate = DateTime.Parse(normalName); 

     long fit = thisDate.ToFileTime(); 

だから、これらのステップを経る:

  1. は時間を作成し、ファイルをlongに変換します。ファイル名内の文字列として保存

  2. (私はそのようにはなく、それを渡す「」ファイル名です)

  3. その後、私はそれを取得し、私は読みやすいDateTime書式を作成するには、長い間にそれをキャストFromFileTimeを持つ人間のために。その後、コンボボックスでそれを読むためにユーザにストリングを送ります。

  4. そして、ユーザが選択し、それは私が投げたい

(秒未満のすべてを失うように見えるとして、この時点で私は問題を抱えている)TGE TiFileTimeを通じて長期に入るために、日時となりファイルをもう一度実行して、ユーザーが選択したものと一致するものを見つけることができます

here is some output values:

編集:あなたは上記の結果を形成見ることができるように。私は何かが恋しい。初期値と最終値は同じではありません。同じファイルを再度見つけることはできません。

+1

あなたが欠けているのかについて、より具体的なことができます...質問が何であるかは明らかではありませんか? –

+0

これは動作しません。画像には私のイニシャルが表示され、最終的な結果は同じではありません! – Fero

+0

あなたがここに求めているものはまだ分かりません –

答えて

0

Parse()メソッドは、DateTime構造体が保持する情報のすべてを持っていません(メンバーはhereです)。

string normalName = ""+ normalDate; 
DateTime thisDate = DateTime.Parse(normalName); 

正確な値(ティックを含む)を元の値として返しません。次のように あなたはTicksを使用して、それを行う必要があります。

string normalName = "" + normalDate.Ticks; 
DateTime thisDate = new DateTime(long.Parse(normalName)); 
long fit = thisDate.ToFileTime(); 
+0

私はそれを解析することができない場合、私は文字列(または長い "ToFileTime")に時間を取り戻すことができますか? – Fero

+0

私は1つの提案(Tickプロパティを使用)で私の答えを更新しました –

+0

これは魅力的なように働いてくれてありがとう! – Fero

関連する問題