当前位置:   article > 正文

C#用DateAndTime.DateDiff方法和TimeSpan分别计算时间间隔

C#用DateAndTime.DateDiff方法和TimeSpan分别计算时间间隔

目录

一、计算时间间隔的方法

1.用DateAndTime.DateDiff方法计算时间间隔

2.使用TimeSpan获取日期时间间隔

二、实例

1.示例一:用DateAndTime.DateDiff方法计算时间间隔

2.示例二:使用TimeSpan获取日期时间间隔 


一、计算时间间隔的方法

1.用DateAndTime.DateDiff方法计算时间间隔

        在程序设计过程中,经常需要计算两个时间信息所间隔的天数,使用DateDiff方法方便地计算出两个时间段的间隔。

2.使用TimeSpan获取日期时间间隔

        使用TimeSpan也可以获取日期时间的间隔数,首先将两个DateTime对象相减,此时会返回TimeSpan对象,然后调用TimeSpan对象的Days属性就可以方便地得到两个DateTime对象所间隔的天数。

        TimeSpan表示一个时间间隔。一个TimeSpan对象都表示一个时间间隔 (持续时间的时间或时间),单位为正数或负数的天数、 小时、 分钟、 秒和小数部分的第二个数字。

  1. //主要属性
  2. Days:Int32 此实例的天数部分。 返回值可以是正数也可以是负数。
  3. Hours:Int32 当前 TimeSpan 结构的小时数部分。 返回值的范围为 -2323
  4. Milliseconds:Int32 当前 TimeSpan 结构的毫秒数部分。 返回值的范围为 -999999
  5. Minutes:Int32 当前 TimeSpan 结构的分钟数部分。 返回值的范围为 -5959
  6. Seconds:Int32 当前 TimeSpan 结构的秒数部分。 返回值的范围为 -5959
  7. Ticks:Int64 此实例包含的刻度数。
  8. TotalDays:Double 此实例表示的总天数。
  9. TotalHours:Double 此实例表示的总小时数。
  10. TotalMilliseconds:Double 此实例表示的总毫秒数。
  11. TotalMinutes:Double 此实例表示的总分钟数。
  12. TotalSeconds:Double 此实例表示的总秒数。

二、实例

1.示例一:用DateAndTime.DateDiff方法计算时间间隔

  1. // DateAndTime.DateDiff()
  2. using Microsoft.VisualBasic;
  3. namespace _062
  4. {
  5. public partial class Form1 : Form
  6. {
  7. private GroupBox? groupBox1;
  8. private DateTimePicker? dateTimePicker2;
  9. private DateTimePicker? dateTimePicker1;
  10. private Label? label2;
  11. private Label? label1;
  12. private Button? button1;
  13. public Form1()
  14. {
  15. InitializeComponent();
  16. Load += Form1_Load;
  17. }
  18. private void Form1_Load(object? sender, EventArgs e)
  19. {
  20. //
  21. // dateTimePicker2
  22. //
  23. dateTimePicker2 = new DateTimePicker
  24. {
  25. Location = new Point(123, 49),
  26. Name = "dateTimePicker2",
  27. Size = new Size(200, 23),
  28. TabIndex = 3
  29. };
  30. //
  31. // dateTimePicker1
  32. //
  33. dateTimePicker1 = new DateTimePicker
  34. {
  35. Location = new Point(123, 25),
  36. Name = "dateTimePicker1",
  37. Size = new Size(200, 23),
  38. TabIndex = 2
  39. };
  40. //
  41. // label2
  42. //
  43. label2 = new Label
  44. {
  45. AutoSize = true,
  46. Location = new Point(6, 55),
  47. Name = "label2",
  48. Size = new Size(104, 17),
  49. TabIndex = 1,
  50. Text = "第二次输入时间:"
  51. };
  52. //
  53. // label1
  54. //
  55. label1 = new Label
  56. {
  57. AutoSize = true,
  58. Location = new Point(6, 31),
  59. Name = "label1",
  60. Size = new Size(104, 17),
  61. TabIndex = 0,
  62. Text = "第一次输入时间:"
  63. };
  64. //
  65. // button1
  66. //
  67. button1 = new Button
  68. {
  69. Location = new Point(135, 104),
  70. Name = "button1",
  71. Size = new Size(75, 23),
  72. TabIndex = 2,
  73. Text = "计算间隔",
  74. UseVisualStyleBackColor = true
  75. };
  76. button1.Click += Button1_Click;
  77. //
  78. // groupBox1
  79. //
  80. groupBox1 = new GroupBox
  81. {
  82. Location = new Point(12, 12),
  83. Name = "groupBox1",
  84. Size = new Size(330, 86),
  85. TabIndex = 0,
  86. TabStop = false,
  87. Text = "求时间间隔"
  88. };
  89. groupBox1.Controls.Add(dateTimePicker2);
  90. groupBox1.Controls.Add(dateTimePicker1);
  91. groupBox1.Controls.Add(label2);
  92. groupBox1.Controls.Add(label1);
  93. groupBox1.SuspendLayout();
  94. //
  95. // Form1
  96. //
  97. AutoScaleDimensions = new SizeF(7F, 17F);
  98. AutoScaleMode = AutoScaleMode.Font;
  99. ClientSize = new Size(354, 136);
  100. Controls.Add(button1);
  101. Controls.Add(groupBox1);
  102. Name = "Form1";
  103. StartPosition = FormStartPosition.CenterScreen;
  104. Text = "计算时间间隔";
  105. groupBox1.ResumeLayout(false);
  106. groupBox1.PerformLayout();
  107. }
  108. /// <summary>
  109. /// 使用DateDiff方法获取日期间隔
  110. /// </summary>
  111. private void Button1_Click(object? sender, EventArgs e)
  112. {
  113. MessageBox.Show("间隔 " +
  114. DateAndTime.DateDiff(DateInterval.Day, dateTimePicker1!.Value, dateTimePicker2!.Value,
  115. FirstDayOfWeek.Sunday, FirstWeekOfYear.Jan1).ToString() + " 天", "间隔时间");
  116. }
  117. }
  118. }

 

2.示例二:使用TimeSpan获取日期时间间隔 

  1. // 用TimeSpan对象的方法计算时间间隔
  2. namespace _062_1
  3. {
  4. internal class Program
  5. {
  6. private static void Main(string[] args)
  7. {
  8. ArgumentNullException.ThrowIfNull(args);
  9. DateTime date1 = new(2023, 1, 1, 8, 0, 15);
  10. DateTime date2 = new(2024, 8, 18, 13, 30, 30);
  11. TimeSpan interval = date2 - date1;
  12. Console.WriteLine("{0} - {1} = {2}", date2, date1, interval.ToString());// Display individual properties of the resulting TimeSpan object.
  13. Console.WriteLine(" {0,-35} {1,20}", "Value of Days Component:", interval.Days);
  14. Console.WriteLine(" {0,-35} {1,20}", "Total Number of Days:", interval.TotalDays);
  15. Console.WriteLine(" {0,-35} {1,20}", "Value of Hours Component:", interval.Hours);
  16. Console.WriteLine(" {0,-35} {1,20}", "Total Number of Hours:", interval.TotalHours);
  17. Console.WriteLine(" {0,-35} {1,20}", "Value of Minutes Component:", interval.Minutes);
  18. Console.WriteLine(" {0,-35} {1,20}", "Total Number of Minutes:", interval.TotalMinutes);
  19. Console.WriteLine(" {0,-35} {1,20:N0}", "Value of Seconds Component:", interval.Seconds);
  20. Console.WriteLine(" {0,-35} {1,20:N0}", "Total Number of Seconds:", interval.TotalSeconds);
  21. Console.WriteLine(" {0,-35} {1,20:N0}", "Value of Milliseconds Component:", interval.Milliseconds);
  22. Console.WriteLine(" {0,-35} {1,20:N0}", "Total Number of Milliseconds:", interval.TotalMilliseconds);
  23. Console.WriteLine(" {0,-35} {1,20:N0}", "Ticks:", interval.Ticks);
  24. }
  25. }
  26. }
  27. // 运行结果:
  28. /*
  29. 2024-08-18 13:30:30 - 2023-01-01 08:00:15 = 595.05:30:15
  30. Value of Days Component: 595
  31. Total Number of Days: 595.2293402777777
  32. Value of Hours Component: 5
  33. Total Number of Hours: 14285.504166666668
  34. Value of Minutes Component: 30
  35. Total Number of Minutes: 857130.25
  36. Value of Seconds Component: 15
  37. Total Number of Seconds: 51,427,815
  38. Value of Milliseconds Component: 0
  39. Total Number of Milliseconds: 51,427,815,000
  40. Ticks: 514,278,150,000,000
  41. */

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/45194
推荐阅读
相关标签
  

闽ICP备14008679号