【问题标题】:C# with mongodb DateTime ConvertC# 与 mongodb 日期时间转换
【发布时间】:2014-11-13 16:47:18
【问题描述】:

我想将 "ISODate(\"2014-11-13T18:43:33.868Z\")" 转换为 c# datetime ex 2014-11-13 18:43:33。 值 "ISODate(\"2014-11-13T18:43:33.868Z\")" 取自 MongoDB 集合。

请帮忙。

【问题讨论】:

  • 你有没有尝试过自己解决这个问题?您面临什么具体问题?
  • 把c#代码放到你的问题中
  • 这不是 C# 日期时间.. 看起来更像 TimeStamp 格式请显示您当前使用的 C# 代码也进行谷歌搜索,因为那里有很多示例,这已经是以前在 SO 上问过.. 请表现出更多的努力.. stackoverflow.com/questions/3556144/…
  • C# MongoDB 驱动程序将为您进行此类转换。如果您发布代码,我们可以看到您可能做错了什么。

标签: c# mongodb datetime


【解决方案1】:

您可以在 C# 中将 DateTime 设置为 UTC

var createDate = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc)

或

dateTime = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc)

然后将类型DateTime插入mongodb 它在我的情况下有效。

【讨论】:

    【解决方案2】:

    您可以在从数据库中提取日期时将其存储为 BsonDateTime 对象,然后将其转换如下:

    DateTime dt = bdt.ToUniversalTime();
    

    您可能会发现this question 有助于了解更多有关ToUniversalTime() 工作原理的信息。

    【讨论】:

      【解决方案3】:

      如果我理解清楚,仅仅因为它在你的字符串中写了ISODate,那并不能使它成为ISO 8601 格式。 "O" or "o" standard format specifier 符合 ISO 8601 格式,它是 "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" 自定义格式字符串 DateTime。这与您的字符串格式不匹配。

      如果您的所有字符串都具有像这样的稳定​​格式,您可以使用custom date and time formats 与文字字符串分隔符,如;

      string s = "ISODate(\"2014-11-13T18:43:33.868Z\")";
      string format = "'ISODate(\"'yyyy-MM-dd'T'HH:mm:ss.fff'Z\")'";
      DateTime date;
      if(DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture,
                                DateTimeStyles.None, out date))
      {
          Console.WriteLine (date);
      }
      

      如果你想用"2014-11-13 18:43:33" 格式对你的DateTime 进行字符串表示,你可以使用DateTime.ToString() 这样的方法;

      date.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 2019-05-09
        • 2021-10-23
        • 2011-05-30
        • 2020-06-15
        • 2021-07-25
        相关资源
        最近更新 更多