C# 从日期时间转换为C格式的“2012年10月1日23:59:59:000”到“2012年10月1日23:59:59”

C# 从日期时间转换为C格式的“2012年10月1日23:59:59:000”到“2012年10月1日23:59:59”,c#,asp.net,C#,Asp.net,我的数据库包含格式为2012-10-01 23:59:59.000的起始日期,同时将其值作为2012年10月1日23:59:59:000的提交前端。那么,如果没有Oct格式,我如何获取日期呢 我也试过这个 foreach (DataRow dr in _dt.Rows) { dr["FromDt"] = String.Format("{0:dd-MM-yyyy hh:mm tt zzz}", dr["FromDt"]); dr["ToDt"] =

我的数据库包含格式为2012-10-01 23:59:59.000的起始日期,同时将其值作为2012年10月1日23:59:59:000的提交前端。那么,如果没有Oct格式,我如何获取日期呢

我也试过这个

     foreach (DataRow dr in _dt.Rows)
    {
        dr["FromDt"] = String.Format("{0:dd-MM-yyyy hh:mm tt zzz}", dr["FromDt"]);
        dr["ToDt"] = String.Format("{0:dd-MM-yyyy}", dr["ToDt"]);  
    }
但是不能

我把stackoverflow的所有要求都提到了我所知的范围内。请提出一些办法。 提前谢谢

我也使用了下面这些颤音-

            DateTime dt = DateTime.Parse(dr["FromDt"].ToString());
        dr["FromDt"] = String.Format("{0:dd-MM-yyyy hh:mm tt zzz}", dr["FromDt"]);
tl;dr表示该代码适用于DateTime或DateTimeOffset值。但是,在这种情况下,dr[FromDt]中的对象类型不是DateTime或DateTimeOffset值

按预期工作:

string.Format("{0:yyyy-MM-dd}",DateTime.Now) // -> 2012-10-09
观察到的行为;foo是一个字符串,忽略了格式修饰符:

string.Format("{0:junk}","foo") // -> foo
如果该值恰好是一个字符串(希望是在从数据库读取时意外转换的),则显示的值看起来可疑地像someDateTime.ToString,并且在数据库中不是这样,则:

固定/移除转换,或者, 将其转换回DateTime first hack:
若您使用的是datetimepicker,那个么只需进入它的属性,然后将format属性设置为short。然后在显示日期时,您应该将其显示为>>

dtpFrmDate.Value.Date.ToShortDateString();
我想它会给你想要的结果。

试试这个

将字段转换为DateTime dt&然后应用格式这应该可以

DateTime dt = DateTime.Parse(dr["FromDt"];
String.Format("{0:dd MMM yyyy hh:mm:ss tt zzz}", dt)
如果你不想要时区,那么你应该把它当作

String.Format("{0:dd MMM yyyy hh:mm:ss}", dt)
如果您想从下面的示例中学习,可以使用任何格式

 // create date time 2008-03-09 16:05:07.123
    DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

    String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
    String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
    String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Sun Sunday" day
    String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
    String.Format("{0:m mm}",          dt);  // "5 05"            minute
    String.Format("{0:s ss}",          dt);  // "7 07"            second
    String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
    String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
    String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
    String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone

// date separator in german culture is "." (so "/" changes to ".")
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9/3/2008 16:05:07" - english (en-US)
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9.3.2008 16:05:07" - german (de-DE)


// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}", dt);            // "3/9/2008"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}", dt);    // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}", dt);            // "03/09/08"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

String.Format("{0:t}", dt);  // "4:05 PM"                         ShortTime
String.Format("{0:d}", dt);  // "3/9/2008"                        ShortDate
String.Format("{0:T}", dt);  // "4:05:07 PM"                      LongTime
String.Format("{0:D}", dt);  // "Sunday, March 09, 2008"          LongDate
String.Format("{0:f}", dt);  // "Sunday, March 09, 2008 4:05 PM"  LongDate+ShortTime
String.Format("{0:F}", dt);  // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt);  // "3/9/2008 4:05 PM"                ShortDate+ShortTime
String.Format("{0:G}", dt);  // "3/9/2008 4:05:07 PM"             ShortDate+LongTime
String.Format("{0:m}", dt);  // "March 09"                        MonthDay
String.Format("{0:y}", dt);  // "March, 2008"                     YearMonth
String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123
String.Format("{0:s}", dt);  // "2008-03-09T16:05:07"             SortableDateTime
String.Format("{0:u}", dt);  // "2008-03-09 16:05:07Z"            UniversalSortabl
那么:

var dt = DateTime.ParseExact(dr["FromDt"].ToString(), "dd MMM yyyy HH:mm:ss:fff", enUS, DateTimeStyles.None);
var output = dt.ToString("dd-MM-yyyy HH:mm:ss.fff");

编辑:更改为使用ParseExact,以适应输入字符串的稍微奇怪的格式。

您使用datetimepicker吗?@knowledge Seeker-我检查了您的答案,这会导致错误,因为-String未被识别为有效的日期时间。还有其他建议吗?您没有执行任何日期检查以查看日期是否为空或格式是否错误……感谢您的时间,正如您告诉我们的那样使用日期时间。Parse DateTime dt=DateTime.Parsedr[FromDt]。ToString;这会导致错误,因为未将-String识别为有效的日期时间。@Teju,请使用String strDate=dr[FromDT].ToString;查看它是否有效,并使用DateTime dt=DateTime.ParsestrDate;这应该是可行的,否则你必须先检查数据的格式是否正确或为空,当我使用它作为DateTime dt=DateTime.Parse2012-10-01 23:59:56.000时,它对我来说效果很好//2012年10月1日23:59:59:000 Reponse.write String.Format{0:dd-MMM-yyy-hh:mm:sss},dt;再次感谢您的回复。foreach DataRow dr in{u dt.Rows{String strDate=dr[FromDt].ToString;DateTime dt=DateTime.ParsestrDate;dr[FromDt]=String.Format{0:dd-MM-yyyy-hh:MM-tt-zzz},dr[FromDt];由于字符串未被识别为有效的日期时间,因此在粗体行上再次出现错误。dr[ToDt]=String.Format{0:dd-MM-yyyy},dr[ToDt];}嘿,strDate=01-Oct-2012 13:30:00:000在断点上,所以当我将其解析到下一行时,**DateTime dt=DateTime.ParsestrDate;**造成上述错误..DateTime dt=DateTime.Parse2012-10-01 23:59:56.000;这很好用,但是在我的字符串中,month是Oct格式。这导致了错误。感谢您的回复,上面的代码导致错误5“System.DateTime.Parsestring”的最佳重载方法匹配有一些无效参数C:\Inetpub\wwwroot\Complaint\Entry\SDF\sdflifleveUpdate.aspx.cs 70 28很抱歉-我在对象中添加了一个.ToString使其生效parsable.@TejuMB该代码适用于DateTime或DateTimeOffset值。-所以,找出是什么使它不是DateTime值。真正的价值是什么?为什么?感谢您的时间pst,在我的数据库中FromDtdatetime的值是2012-10-01 23:59:59.000,但当我通过datatable将此值带到前端时,它的提交时间为2012年10月1日23:59:59:000。请再次检查我编辑的问题。@TejuMB可能有什么东西正在将其转换为字符串-找出它是什么。我相信我的结论是正确的,我已经提供了证明的例子。也就是说,验证它是DataTable中的DateTime,并验证该列的类型是否合适。我怀疑这是真的,因为您的代码试图将垃圾值推回。嘿,再次感谢您的回复。。是的,我在我的数据库中得到了差异,值为2012年10月1日13:30:00.000,但当将其传递到前端时,显示为2012年10月1日13:30:00:000,您可以看到。已更改为:当我将数据从SQL发送到前端时。为什么会这样?是的,我终于明白了,在将数据从SQL发送到前端的过程中,我将其类型转换为SQL so中的字符串。已转移到:。