如何在app.config文件中写日期?

时间:2012-06-21 14:34:19

标签: c# .net date web-config app-config

我需要能够在app.config文件中定义日期。我该怎么做,然后使用c#?

检索它

5 个答案:

答案 0 :(得分:11)

将值存储在配置文件中:

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

然后检索您使用的值:

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

var appDate = DateTime.Parse(value);

答案 1 :(得分:4)

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

转到“设置”并添加日期时间并定义dateenter image description here

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

DateTime myDate = Properties.Settings.Default.MyDate;

答案 2 :(得分: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 link以获取更多帮助。

答案 3 :(得分: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并根据您的应用处理错误条件。

答案 4 :(得分:0)

然而你想要的!我的意思是,一个字符串,但除此之外,你的选择是无限的。如果您愿意,可以将其存储为儿童书中的日期。只需在需要使用它的任何地方解析它。但我建议在某处查看C#代码中的DateTime.ToLongDateString,学习该模式,然后将其存储起来。