C# DateTime.ParseExact创建了正确的日期对象,但日期设置错误

C# DateTime.ParseExact创建了正确的日期对象,但日期设置错误,c#,date,datetime,C#,Date,Datetime,所以我有一个日期字符串“2014-12-10T19:26:37.381467”,这是我从PostgreSQL数据库中得到的 我有一个函数 public static bool String2DatePG(string s, out DateTime dd) { try { CultureInfo USCulture = new CultureInfo("en-us", false); var formatstring = "yyyy'-'MM'-'

所以我有一个日期字符串“2014-12-10T19:26:37.381467”,这是我从PostgreSQL数据库中得到的

我有一个函数

public static bool String2DatePG(string s, out DateTime dd)
{
    try
    {
        CultureInfo USCulture = new CultureInfo("en-us", false);
        var formatstring = "yyyy'-'MM'-'dd'T'HH':'mm':'ss";
        if (!String.IsNullOrEmpty(s))
        {
            var msc = s.Split('.');
            var mscc = msc.Count();
            if (mscc <= 0)
            {
                dd = DateTime.ParseExact(s, formatstring , USCulture);
                return true;
            }

            var fc = msc.Last();
            var fcc = fc.Count();                   

            if (fcc > 0)
            {
                var newformat = formatstring + '.';

                for (int i = 0; i < fcc; i++)
                {
                    newformat += 'f';
                }

                dd = DateTime.ParseExact(s, newformat, USCulture);
                return true;
            }
        }
    }
    catch (Exception)
    {
    }

    dd = DateTime.MinValue;
    return false;
}
publicstaticboolstring2datepg(字符串s,out-DateTime-dd)
{
尝试
{
CultureInfo USCulture=新的CultureInfo(“en-us”,false);
var formatstring=“yyyy'-'MM'-'dd'T'HH':'MM':'ss”;
如果(!String.IsNullOrEmpty)
{
var msc=s.Split('.');
var mscc=msc.Count();
如果(mscc 0)
{
var newformat=formatstring+'';
对于(int i=0;i
它读取日期字符串,检查有多少毫秒数字,并根据这些数字创建一个格式字符串。 我从DB中得到的字符串看起来不错,但当dd对象设置为奇怪的值时,如下图所示:

我不知道这里出了什么问题,但当我尝试再次保存DB值时,它似乎将日期设置为与我在第一句中提到的日期完全不同的日期,如前面带有+符号的Date对象中的图片所示。DateTime的所有其他对象似乎都很好,或者我完全遗漏了什么?

您正在查看DateTime对象的属性。此属性中的时间被忽略,因此默认为上午12点

从MSDN:

由于DateTime类型在一个类型中同时表示日期和时间,因此必须避免将date属性返回的日期误解为日期和时间


如果您正在通过将
dd.Date
发送回数据库进行测试,请尝试只保存
dd

对不起-图片中显示的日期有什么奇怪之处?它似乎与您在问题顶部发布的日期非常匹配,设置为12:00:00 AM,尽管我的第一句话中字符串的日期是“19:26:37”…日期的第一部分只是日期部分-您可以在对象窗口的下方看到“TimeOfDay”作为另一个属性谢谢您的澄清。看来我的问题出在别的地方了。。。