C# DateTime.ParseExact创建了正确的日期对象,但日期设置错误
所以我有一个日期字符串“2014-12-10T19:26:37.381467”,这是我从PostgreSQL数据库中得到的 我有一个函数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'-'
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”作为另一个属性谢谢您的澄清。看来我的问题出在别的地方了。。。