- - PR -
DateTimeをシリアル値に変換
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-17 20:53
DateTimeに格納されている日時情報をファイルに保存しようと思います。
質問1 C#(NET Framework 1.1)にはある特定の日付を基準にしたシリアル値という 概念は無いのでしょうか? TimeSpan関数を使って自分で勝手に"2000年1月1日"を基準と定義し、その 経過秒数(あるいは経過ミリ秒数)をシリアル値を定義しても良いのですが、 C#にそのような概念があれば、そちらを採用しようと思います。 質問2 DateTimeが保持している時刻情報の最小単位はミリ秒でしょうか? (これ以下の単位があっても多分無意味な値でしょうが) | ||||||||
|
投稿日時: 2004-04-17 21:02
DateTimeのヘルプを見てみましょう。
以下、いずれもヘルプより
DateTime.Ticks プロパティ このインスタンスの日付と時刻を表すタイマ刻み数を取得します。 DateTime コンストラクタ DateTime 構造体の新しいインスタンスを、指定したタイマ刻み数に初期化します。
時刻値は 100 ナノ秒単位 (タイマ刻み) で表し、日付は GregorianCalendar 暦の A.D. (西暦紀元) 1 年 1 月 1 日の午前 00:00 からのタイマ刻み数で表します。たとえば、タイマ刻み値 31241376000000000L は、0100 年 1 月 1 日 (金曜日) の深夜 12:00:00 を表します。 DateTime 値は、常に、明示的な暦または既定の暦のコンテキストで表されます。 | ||||||||
|
投稿日時: 2004-04-18 00:43
菴
| ||||||||
|
投稿日時: 2004-04-18 00:49
すみません。なぜか化け文字です。
確かにヘルプには西暦1年1月1日が基準日で最小単位が100ナノ秒と書いて あります。しかし、西暦1年1月1日を基準日にして100ナノ秒単位の通算ナ ノ秒数を算出する直接のメソッドが用意されていないように思えます。 したがって、この基準日とナノ秒単位は実用面ではほとんど意味が無いと理解 してOKでしょうか。 | ||||||||
|
投稿日時: 2004-04-18 01:11
い、いまいち意味が良く分からないんですが、
まあ、それこそシリアル値としての意味しかないっていうかシリアルに一意な値で表現できるって言う意味があるだけでは(ま、内部表現としての意味はあるにしても)。 ※実用的な意味と言うのが良く分かりません… 最初の質問で、シリアル値を使えないのかって仰ってましたから、使える事には意味があるんでは? | ||||||||
|
投稿日時: 2004-04-18 09:44
諸農です。
DateTime変数に格納されている情報をファイルに保存したいのであれば、 DateTimeそのものをBinaryFormatterとFileStreamでOKの様な気が。。 日付時刻を文字列形式で保存したいのであれば、ToLongDateString()等の メソッドで表現形式の変換を行った上で保存してみてはいかがでしょうか。
正直言って、このことを行う上で、いったい何が問題になっているのか、 何を問題にしているのか、投稿内容からではわかりません。 とりあえずやってみたい事を試してみて、期待通りの事が出来るのか、 出来ないのかを確認されてみてはいかがですか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-04-18 20:17
ご返答ありがとうございます。
今回の質問は単に技術的興味が動機でした。「やってみたいことができない」という わけではありませんでした。実際プログラムでは2000年1月1日からの通算ミリ秒で処 理ができています。ミリ秒でしか取得できないのに100ナノ秒単位で管理している という部分に少し違和感を感じただけです。 「DateTimeそのものをBinaryFormatterとFileStreamでOK」という方法はしたことが ありませんでした。 MSDNを見ているのですが、BinaryFormatterによるシリアル化とその復元のし方が よく分からないのです。アドバイスいただければありがたいです。 | ||||||||
|
投稿日時: 2004-04-18 22:39
諸農です。
MSDNを見られていると言うことですので、 ms-help://MS.MSDNQTR.2004APR.1041/cpref/html/frlrfSystemRuntimeSerializationFormattersBinaryBinaryFormatterClassTopic.htm 上記で示したページに書かれているものが、ズバリだとは思うのですが、 何がよくわからないのでしょうか? 1.サンプルコードの実行方法がわからない? 2.自前での検証コードの書き方がわからない? 3.自前のクラスにシリアライズ属性(Serializable)を付加する方法や ISerializableインタフェースの実装方法がわからない? 等々、いろいろと疑問は出てくるのですが。。
_________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2004-04-18 22:55 ] |