C# - 是否有DateTime.Now()的字符串表示?

时间:2010-06-04 10:36:02

标签: c# datetime

我需要解析配置文件中的实际日期值。所以我需要知道是否有DateTime.Now()?的字符串表示我可以通过DateTime.Parse(..)解析它吗?

由于

修改

对不起,我没有很好地解释自己。我重新解释了我的问题。 我的配置文件包含以下部分:

<Parameters>
  <Parameter Name="StartTime" Value="**I Want to put a string here that will be parsed as DateTime.Now()**"/>
</Parameters>

注意Value属性中指定的内容!

7 个答案:

答案 0 :(得分:6)

我认为只需解析日期时间就无法实现您想要的效果。我认为你要做的是,有一个代表DateTime.Now的值,现在没有,因为DateTime.Now永远在变化。您可能想要做的是允许一个特殊的字符串,您想要表示Now值:

public DateTime GetDateTime(string value)
{
  if (string.IsNullOrEmpty(value))
    return DateTime.MinValue;

  if ("{now}".Equals(value, StringComparison.InvariantCultureIgnoreCase))
    return DateTime.Now;

  return DateTime.Parse(value);
}

答案 1 :(得分:3)

DateTime.Parse将解析多种格式:

  • 包含日期和时间组件的字符串。
  • 包含日期但没有时间组件的字符串。
  • 包含时间但没有日期组件的字符串。
  • 包含时区信息并符合ISO 8601的字符串。例如,以下两个字符串中的第一个指定协调世界时(UTC);第二个指定比UTC早7个小时的时区:
  • 2008-11-01T19:35:00.0000000Z
  • 2008-11-01T19:35:00.0000000-07:00
  • 包含GMT指示符并符合RFC 1123时间格式的字符串。例如:
    1. 周六,2008年11月1日19:35:00 GMT
  • 包含日期和时间以及时区偏移信息的字符串。例如:
    1. 03/01/2009 05:42:00 -5:00

如果您想进一步控制解析,可以使用DateTime.ParseExact

关于您的修改,只需使用DateTime.Now.ToString()

答案 2 :(得分:3)

正如其他人所建议的那样,最好的解决方案是在通过DateTime.Parse(...)

运行您的值之前添加代码以检查魔术值

如果出于某种原因无法做到这一点,那么下一个最佳解决方案是仅指定时间;当天的日期将在您指定的时间返回:

DateTime today = DateTime.Parse("12:34"); // Currently returns 2010/06/04 12:34

答案 3 :(得分:1)

DateTime.Now.ToLongDateString();
DateTime.Now.ToLongTimeString();
DateTime.Now.ToShortDateString();
DateTime.Now.ToShortTimeString();
DateTime.Now.ToString("insert a valid date formatter string here");
顺便说一句,如果我理解你的需要,那么正确的解决办法就是:

parse the date from the text file with DateTime.TryParse();
now you have a DateTime variable with the text file date stored.
now you can do
DateTime textParsedDate = new DateTime(2010, 6, 4); //your textFile parsed date.
int result = DateTime.Now.CompareTo(textParsedDate); //refer to the documentation to understand the result of DateTime.CompareTo

答案 4 :(得分:1)

var dateAsString = DateTime.Now.ToString();
Console.WriteLine(DateTime.Parse(dateAsString));

Now属性的ToString()产生你想要的东西。

其格式为"04/06/2010 11:41:43"

答案 5 :(得分:1)

在我看来,您从配置文件中获取了一个字符串,并且您希望它包含当前日期/时间。你希望它的行为有点像人们在ASP.NET中习惯的那样:

<p>Current date: <%= DateTime.Now.ToString() %>.</p>

要从任何配置文件执行相同操作,假设您的函数名为GetConfigParam(“StartTime”),您可以执行以下操作:

<!-- inside config file -->
<Parameter 
   Name="StartTime" 
   Value="Current date/time: {0}"/>

<!-- or, if you just want the current date/time (but that gets a bit silly
     as you can do that by code as has been suggested here before -->
<Parameter Name="StartTime" Value="{0}" />

然后,您使用此代码解析上述内容({0}将由String.Format填充,并可与任何对象一起使用):

string startTimeParam = GetConfigParam("StartTime");
string startTime = String.Format(startTimeParam, DateTime.Now);

答案 6 :(得分:0)

您是否希望Value属性中的文本类似于自动更新字段?

如果这是您想要的,我认为您可以做的最接近的事情是保存一个访问日志,为每个请求保存一个条目,但这当然取决于您想要首先考虑日期的原因。 / p>