开云手机站登录入口携手维拉开启官方合作

3个月前 (04-22)

在中C#,提供了许多方法将包含多种格式的日期时间的字符串转换为统一DateTime对象。 同题参见另外这些方法可以识别很多标准日期时间格式,如果您与它们不同,您甚至可以提供自己的格式。

  • DateTime.Parse -将字符串转换为DateTime对象。如果操作失败,它将引发异常。
  • DateTime.TryParse -仅在可能时将字符串转换为DateTime对象。如果成功则返回,如果失败则返回。 __true``false
  • DateTime.TryParseExact -将指定格式的字符串转换为DateTime对象。true如果成功则返回,false否则返回。

在您的情况下,您可以这样使用DateTime.TryParse DateTime.Parse 除非您绝对确定格式正确,否则建议使用简单的做法。 对照阅读而不是简单地使用它):

var dtStr1 = " 2019. 09. 23. 14:54:23";
var dtStr2 = "2019.09.23 14:54:23";
var dtStr3 = "2019-09-23 14:54:23";

DateTime.TryParse(dtStr1, out DateTime dt1);
DateTime.TryParse(dtStr2, out DateTime dt2);
DateTime.TryParse(dtStr3, out DateTime dt3);

一旦转换为DateTime对象,它就不再具有与之关联的格式。 相关阅读这是个structure,因此只有成员变量和方法。因此,要计算总时数等。可以使用提供的方法。

假设您要计算一天工作开始到结束之间的时间。您可以将它们转换为DateTime对象,然后从其他对象中减去一个对象,这将为您提供一个TimeSpam对象。

var dtStrStart = "2019.09.23 08:23:12";
var dtStrEnd = "2019.09.23 16:17:28";

DateTime.TryParse(dtStrStart, out DateTime dtStart);
DateTime.TryParse(dtStrEnd, out DateTime dtEnd);

var diff = dtEnd - dtStart;

现在TimeSpandiff此处的对象将为您提供一堆具有小时,分钟等差异的属性。

TimeSpan.DaysTimeSpan.Minutes等会给你在天。分钟等时间

Console.WriteLine(diff.Days);
Console.WriteLine(diff.Hours);
Console.WriteLine(diff.Minutes);
Console.WriteLine(diff.Seconds);
Console.WriteLine(diff.Milliseconds);

0

7

54

16

0

TimeSpan.TotalMinutes等会给你在各个单元的整个时间段。

Console.WriteLine(diff.TotalDays);
Console.WriteLine(diff.TotalHours);
Console.WriteLine(diff.TotalMinutes);
Console.WriteLine(diff.TotalSeconds);
Console.WriteLine(diff.TotalMilliseconds);

0.329351851851852

7.90444444444444

474.266666666667

28456

28456000

相反,当您在数据库中存储数据时,必须再次使用标准格式,例如datetimedatetime2。一般来说

解决方法

我有个问题。我需要用代码总结在办公室工作的时间。我从SQL Server得到的日期没问题。但是我有不同的格式。例如:2019. 09. 23.
14
:54:23,2019.09.23 14:54:232019-09-23 14:54:23;
我想总结得出的工作时间。不管一年。这是示例:

try
 {

 string betölt = "SELECT * from munkaorak where";
 if (cbTech.Text != "")
 {
 betölt += " Munkaszam='" + cbMunka.Text + "' AND Részfolyamat='" + cbRész.Text + "' AND TechKod='" + cbTech.Text + "'";
 }
 else if (cbRész.Text != "")
 {
 betölt += " Munkaszam='" + cbMunka.Text + "' AND Részfolyamat='" + cbRész.Text + "'";
 }
 else if(cbMunka.Text !="")
 {
 betölt += " Munkaszam='" + cbMunka.Text + "'";
 }
 betölt += " order by ID DESC";
 MySqlCommand name = new MySqlCommand(betölt,kapcsolat);
 kapcsolat.Open ;
 olvasó = name.ExecuteReader ;
 int összora = 0;

 if (olvasó.HasRows)
 {
 while (olvasó.Read )
 {
 if (olvasó.GetString(7) != "Befejezés: ")
 {
 string[] aha = olvasó.GetString(6).Split(' ');
 string kezdes = aha[4];
 string[] kezd = kezdes.Split(':');
 int kezdoido = Convert.ToInt32(kezd[0]) * 60 * 60 + Convert.ToInt32(kezd[1]) * 60 + Convert.ToInt32(kezd[2]);

 int befejezoido = 0;
 string aha22 = "";
 if (olvasó.GetString(7).IndexOf('-') >= 0)
 {
 string[] aha2 = olvasó.GetString(7).Split(' ');
 string befejezes = aha2[1];
 string[] bef = befejezes.Split(':');
 aha22 = aha2[0].Split('-')[2];
 befejezoido = Convert.ToInt32(bef[0]) * 60 * 60 + Convert.ToInt32(bef[1]) * 60 + Convert.ToInt32(bef[2]);
 }
 else
 {
 string[] aha2 = olvasó.GetString(7).Split(' ');
 string befejezes = aha2[4];
 string[] bef = befejezes.Split(':');
 aha22 = aha2[3];
 befejezoido = Convert.ToInt32(bef[0]) * 60 * 60 + Convert.ToInt32(bef[1]) * 60 + Convert.ToInt32(bef[2]);
 }

 string dolgozott = "";
 if (aha[3].Replace(".","") == aha22.Replace(".",""))
 {
 dolgozott = mpbolora(befejezoido - kezdoido);
 összora += befejezoido - kezdoido;
 }
 else
 {
 dolgozott = mpbolora((86400 - kezdoido) + befejezoido);
 összora += (86400 - kezdoido) + befejezoido;
 }
 string validalo = "";
 try
 {
 string[] validal = olvasó.GetString(9).Split(' ');
 validalo = validal[0] + " " + validal[1] + " " + validal[2] + validal[3] + validal[4] + " " + validal[5];
 }
 catch
 {
 validalo = olvasó.GetString(9);
 }
 string munkafolyamat = olvasó.GetString(3) + "-" + olvasó.GetString(4) + "-" + olvasó.GetString(5);
 string[] sorok = { olvasó.GetString(2),dolgozott,olvasó.GetString(6).Replace("Kezdés: ",""),olvasó.GetString(7).Replace("Befejezés: ",olvasó.GetString(8),validalo,munkafolyamat };
 var lv = new ListViewItem(sorok);
 lvStat.Items.Add(lv);
 }


 }
 }
 else
 {
 kapcsolat.Close ;
 MessageBox.Show("Nincs adat!","Figyelem");
 }
 kapcsolat.Close ;
 lblÖssz.Text = "Összesen ledolgozott órák: " + mpbolora(összora);
 }
 catch (Exception a)
 {
 MessageBox.Show(a.Message);
 kapcsolat.Close ;
 }
 kapcsolat.Close ;

它可以正常工作,但是当出现不同格式时,由于-或空格而无法正常工作。请帮忙!

你可能想看:

标签:string
分享给朋友:

继续阅读

若需了解「开云手机站登录入口携手维拉开启官方合作」的上下文,可结合站内栏目与相关篇目交叉阅读。

栏目用于追新,文内链接用于对照细节。两者配合可减少漏读与重复检索。

继续浏览时优先选择同栏目或相近主题,避免被站外镜像带偏。

站点导览

string · wiki · 科技 · 文化

页面按栏目组织。可先看导读,再进入相关篇目或返回列表。