12

app.config ファイルで日付を定義できるようにする必要があります。これを行い、C# を使用して取得するにはどうすればよいですか?

4

5 に答える 5

13

値を構成ファイルに保存します。

<appSettings>
  <add key="DateKey" value="2012-06-21" />
</appSettings>

次に、使用する値を取得するには:

var value = ConfigurationSettings.AppSettings["DateKey"];

var appDate = DateTime.Parse(value);
于 2012-06-21T14:41:09.623 に答える
5

Visual Studio の設定を使用するのは簡単です。プロジェクトのプロパティを開いて設定を追加し、Settings「プロジェクトにはデフォルト設定ファイルが含まれていません。ここをクリックして作成してください。」をクリックします。

[設定] に移動し、DateTime を追加して、date. ここに画像の説明を入力

コードで設定にアクセスするには、これを行うだけです。

DateTime myDate = Properties.Settings.Default.MyDate;

于 2012-06-21T14:39:50.113 に答える
3

私があなたの質問を完全に理解しているかどうかわからない。私はあなたがしたいと思います:

appSettingsセクションのapp.configで日付を定義できます。

<appSettings>
    <add key="DateX" value="21/06/2012"/>
</appSettings>

そして、次のようなことを行ってAppSettingsエントリを取得します。

Datetime dateX;
System.Configuration.Configuration rootWebConfig1 = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0)
{
        System.Configuration.KeyValueConfigurationElement customSetting =       rootWebConfig1.AppSettings.Settings["DateX"];
        if (customSetting != null)
        {
          dateX = Datetime.Parse(customSetting.Value);
        }
}

詳細については、このMSDNリンクを確認してください。

于 2012-06-21T14:39:04.300 に答える
1

要素を参照していると仮定すると、<appSettings>最初は不運です。各キーは文字列値に関連付けられています。

したがって、DateTime 値を文字列にシリアル化し、読み返すときに解析するだけでよいことがわかります。

app.config が人間によってメモ帳で編集されてもかまわない場合は、64 ビットのティック値を文字列整数として保存します。

ConfigurationManager.AppSettings["date"] = myDateTime.Ticks.ToString(CultureInfo.InvariantCulture);

次のようにして読み返します。

Int64 ticks = Int64.Parse( ConfigurationManager.AppSettings["date"], NumberStyles.Integer, CultureInfo.InvariantCulture );
DateTime myDateTime = new DateTime( ticks );

ただし、人間が判読できるようにしたい場合は、ラウンドトリップ オプションを使用します。

// Serialise
ConfigurationManager.AppSettings["date"] = myDateTime.ToString("o"); // "o" is "roundtrip"
// Deserialise
DateTime myDateTime = DateTime.Parse( ConfigurationManager.AppSettings["date"], NumberStyles.Integer, CultureInfo.InvariantCulture ) );

いくつかのメモ:

  • 私のコードは助言的でラフです。実際には、すべての DateTime インスタンスが最初に UTC であることを確認してから、必要に応じてタイムゾーン オフセットを適用します。
  • 最初に AppSettings に「date」という名前のキーが含まれているかどうかを確認し、含まれていない場合はデフォルトまたはゼロ相当の回答を返します。
  • また、.Parse メソッドを使用せず、代わりに TryParse を使用して、アプリケーションに応じてエラー条件を処理します。
于 2012-06-21T14:39:52.727 に答える
0

しかしあなたが望む!つまり、文字列ですが、それを超えると、選択肢は無限に広がります。必要に応じて、日付に関する子供向けの本として保存することもできます。あなたがそれを使う必要があるところならどこでもそれを解析するだけの問題。ただし、C#コードのDateTime.ToLongDateStringをどこかで調べて、そのパターンを学習し、そのように保存することをお勧めします。

于 2012-06-21T14:38:50.643 に答える