如何在 app.config 文件中写入日期? [关闭]

Posted

技术标签:

【中文标题】如何在 app.config 文件中写入日期? [关闭]【英文标题】:How do I write a date in app.config file? [closed] 【发布时间】:2012-06-23 19:49:33 【问题描述】:

我需要能够在 app.config 文件中定义日期。如何执行此操作,然后使用 c# 检索它?

【问题讨论】:

【参考方案1】:

随心所欲!我的意思是,一个字符串,但除此之外,您的选择是无限的。如果你愿意,你可以把它存储为一本关于约会的儿童读物。只需在需要使用它的地方解析它。但我建议在某处查看 C# 代码中的 DateTime.ToLongDateString,学习该模式,然后像这样存储它。

【讨论】:

【参考方案2】:

不确定我是否完全理解您的问题。我认为你想要:

您可以在 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 link 以获得更多帮助。

【讨论】:

【参考方案3】:

在 Visual Studio 中使用设置很容易。只需打开项目的属性添加设置,然后转到Settings 并单击“该项目不包含默认设置文件。单击此处创建一个。”。

转到设置并添加日期时间并定义您的date

要访问代码中的设置,您只需执行此操作。

DateTime myDate = Properties.Settings.Default.MyDate;

【讨论】:

【参考方案4】:

假设您指的是&lt;appSettings&gt; 元素,那么您一开始就很不走运:每个键都与一个字符串值相关联。

因此您可以看到,您只需要将 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 并根据您的应用程序处理错误情况。

【讨论】:

【参考方案5】:

将值存储在配置文件中:

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

然后检索您使用的值:

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

var appDate = DateTime.Parse(value);

【讨论】:

文化如何:en-US、es-ES 等? 这是旧的,但如果您更改为今天仍然有效:ConfigurationManager.AppSettings["myKey"]

以上是关于如何在 app.config 文件中写入日期? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 运行时读取、写入和更新 app.config 文件中的连接字符串

如何使用 PowerShell 读取/写入 App.config 设置?

如何使用强类型对象写入我自己的 app.config?

在WPF程序运行时动态修改app.config文件后如何立即生效

使用 FileSystemMonitoring 读取 app.config 中的更改并实时写入 app.config

如何在不使用用户设置的情况下在运行时读取/写入 app.config 设置?