【问题标题】:Is there a short-hand to initialize a DateTime variable? [closed]是否有初始化 DateTime 变量的简写? [关闭]
【发布时间】:2019-05-20 13:45:32
【问题描述】:

是否有在 C# 中初始化 DateTime 变量而不显式声明新对象的简写?例如,在 VB.NET 中,您可以将字符串值括在散列中。

Dim date1 As Date = #5/1/2008 8:30:52AM#

【问题讨论】:

  • 你还是要声明变量....
  • 如果不是DateTime 对象,您希望创建什么?你想达到什么具体的结果,为什么需要“更短”?请注意,如果您仅通过击键来测量,那么您给出的 VB 示例会更长。还值得注意的是,这两个操作会产生不同的结果。所以不清楚你到底在问什么。
  • DateTime != 声明中的字符串 - 需要初始化对象属性。
  • @jdweng 使用ParseExact 并提供格式可能是个好主意,也许还提供 CultureInfo。

标签: c# syntax


【解决方案1】:

不,没有比使用new 运算符实际创建DateTime 对象更好或更快的方法了。

可以使用DateTime.ParseDateTime ParseExact 方法(或这些方法的Try* 版本)为您创建DateTime 对象,但这会增加一些不必要的开销,例如分配string的示例:

var d = DateTime.Parse("5/1/2008 8:30:52AM", CultureInfo.InvariantCulture);

【讨论】:

    【解决方案2】:

    通过为 DateTime 对象分配属性或方法返回的日期和时间值。 以下示例将当前日期和时间、当前协调世界时 (UTC) 日期和时间以及当前日期分配给三个新的 DateTime 变量。

    DateTime date1 = DateTime.Now;
    DateTime date2 = DateTime.UtcNow;
    DateTime date3 = DateTime.Today;
    

    或者,如果您需要将字符串解析为 DateTime,您可以使用:

    string iDate = "05/05/2005";
    DateTime oDate = DateTime dt = DateTime.ParseExact(iDate, "M/d/yyyy", new CultureInfo("en-US"));
    MessageBox.Show(oDate.Day + " " + oDate.Month + "  " + oDate.Year );
    

    我希望这是您正在寻找的东西?

    【讨论】:

    • 您不应使用Convert.ToDateTime 将字符串转换为DateTime。使用DateTime.ParseExact 或其他派生词之一。
    • 那么你只使用一种格式。标准的网络库将自动解析各种格式。只有当数据不是 Net 使用的标准格式之一时,您才应该使用 Exact。
    • @jdweng:这样做依赖于主机的文化信息,导致不同环境中潜在的运行时问题。 (并不总是错误,但可能会默默地解析不正确的结果。)更重要的是......为什么要解析字符串文字呢?如果它已经被硬编码,那么只需使用硬编码值来显式构造一个DateTime 并跳过所有这些字符串解析。
    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 2014-08-15
    • 2023-01-20
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多