Tag: datetime

如何检查DateTime期间的交集

我有四个DateTime对象。 A1,A2和B1,B2。 我需要知道A1-A2期间与期间B1-B2不相交。 但我不想写脏代码,就像许多块一样。 if (A1 B1) { return false; } ….等 EDITED 我尝试使用这个: 比较范围 DateTime A1 = DateTime.MinValue.AddMinutes(61); DateTime A2 = DateTime.MinValue.AddHours(1.2); DateTime B1 = DateTime.MinValue.AddMinutes(5); DateTime B2 = DateTime.MinValue.AddHours(1); Console.WriteLine(Range.Overlap( new Range(A1, A2), new Range(B1, B2) )); 它返回true但我预计会错误 。 因为此代码始终返回true if (left.Start.CompareTo(left.Start) == 0) { return true; }

如何检查当前时间是否介于时间范围内?

我有一项服务,用户可以配置为在“非高峰”时段运行。 他们可以设置服务可以运行的时间范围。 例如: 用户A上午8点至下午5点工作,因此他们希望安排应用程序在下午5:30至7:30之间运行。 用户B工作时间为晚上9点至早上6点,因此他们安排应用程序在早上6:30到晚上8:30之间运行。 关键是应用程序使用他们的计算机而不是。 给定当前时间的DateTime,开始的DateTime和停止时间的DateTime,如何检查当前时间是否在开始和停止之间。 对我来说棘手的部分是时间可以越过午夜边界。

格式化.NET DateTime“Day”,没有前导零

对于下面的代码,我希望结果等于2,因为MSDN声明’d’“表示月份中的日期为1到31之间的数字。一位数字日的格式没有前导零。” DateTime myDate = new DateTime( 2009, 6, 4 ); string result = myDate.ToString( “d” ); 但是, 结果实际上等于’6/4/2009′ – 这是短日期格式(也是’d’)。 我可以使用’dd’,但这会增加一个前导零,我不想要。

在SqlParameter中使用DateTime存储过程,格式错误

我正在尝试使用DateTime作为SqlParameter的值从C#,.NET 2.0调用存储过程(在SQL 2005服务器上)。 存储过程中的SQL类型是“datetime”。 从SQL Management Studio执行sproc工作正常。 但每次我从C#调用它时都会收到有关日期格式的错误。 当我运行SQL事件探查器来监视调用时,我然后复制粘贴exec调用以查看正在发生的事情。 这些是我对我尝试过的观察和注释: 1)如果我直接将DateTime作为DateTime传递或转换为SqlDateTime ,则该字段由单引号的PAIR包围,例如 @Date_Of_Birth=N”1/8/2009 8:06:17 PM” 2)如果我将DateTime作为字符串传递,我只得到单引号 3)使用SqlDateTime.ToSqlString()不会产生UTC格式的日期时间字符串(即使转换为通用时间后) 4)使用DateTime.ToString()不会产生UTC格式的日期时间字符串。 5)手动将SqlParameter的DbType设置为DateTime不会更改上述观察结果。 那么,我的问题是,我究竟是如何让C#在SqlParameter传递正确格式化的时间? 当然这是一个常见的用例,为什么这么难以开始工作? 我似乎无法将DateTime转换为SQL兼容的字符串(例如’2009-01-08T08:22:45’) 编辑 RE:BFree,实际执行sproc的代码如下: using (SqlCommand sprocCommand = new SqlCommand(sprocName)) { sprocCommand.Connection = transaction.Connection; sprocCommand.Transaction = transaction; sprocCommand.CommandType = System.Data.CommandType.StoredProcedure; sprocCommand.Parameters.AddRange(parameters.ToArray()); sprocCommand.ExecuteNonQuery(); } 详细了解我尝试过的内容: parameters.Add(new SqlParameter(“@Date_Of_Birth”, DOB)); parameters.Add(new SqlParameter(“@Date_Of_Birth”, DOB.ToUniversalTime())); parameters.Add(new SqlParameter(“@Date_Of_Birth”, DOB.ToUniversalTime().ToString())); SqlParameter param […]

防止对DateTime值进行反序列化时的时区转换

我有一个类,我使用XmlSerializer序列化/反序列化。 该类包含DateTime字段。 序列化时, DateTime字段由包含GMT偏移量的字符串表示,例如2010-05-05T09:13:45-05:00 。 反序列化时,这些时间将转换为执行反序列化的机器的本地时间。 由于不值得解释的原因,我想阻止这种时区转换的发生。 序列化发生在野外,其中存在此​​类的多个版本。 反序列化发生在我控制的服务器上。 因此,似乎在反序列化期间最好处理这个问题。 除了实现IXmlSerializable并“手动”执行所有反序列化之外,我怎样才能实现这一点?

DateTime.Now多久更新一次? 或者是否有更准确的API来获取当前时间?

我有一个循环运行的代码,它根据当前时间保存状态。 有时这可能只相差几毫秒,但由于某些原因,似乎DateTime.Now将始终返回至少10 ms的值,即使它仅在2或3 ms之后。 这是一个主要问题,因为我保存的状态取决于它保存的时间(例如录制内容) 我的测试代码返回10 ms的每个值: public static void Main() { var dt1 = DateTime.Now; System.Threading.Thread.Sleep(2); var dt2 = DateTime.Now; // On my machine the values will be at least 10 ms apart Console.WriteLine(“First: {0}, Second: {1}”, dt1.Millisecond, dt2.Millisecond); } 是否有另一种解决方案可以获得精确的当前时间到毫秒? 有人建议看秒表类。 虽然秒表类非常准确,但它并没有告诉我当前时间,我需要一些东西来保存我的程序状态。

计算给定日期范围内的星期一数

鉴于日期范围,我需要知道在该范围内有多少星期一(或星期二,星期三等)。 我目前在C#工作。

将AM / PM时间转换为24小时格式?

我需要将12小时格式时间(上午/下午)转换为24小时格式时间,例如使用C#将时间从01:00 PM转换为13:00。 我怎么转换它?

DateTime.TryParse世纪控件C#

以下代码段的结果是“12/06/1930 12:00:00”。 如何控制隐含的世纪,以便“12月30日”变为2030? string dateString = “12 Jun 30”; //from user input DateTime result; DateTime.TryParse(dateString, new System.Globalization.CultureInfo(“en-GB”),System.Globalization.DateTimeStyles.None,out result); Console.WriteLine(result.ToString()); 请暂时搁置这样一个事实,即正确的解决方案是首先正确指定日期。 注意:结果与运行代码的pc的系统日期时间无关。 答:谢谢Deeksy for (int i = 0; i <= 9; i++) { string dateString = "12 Jun " + ((int)i * 10).ToString(); Console.WriteLine("Parsing " + dateString); DateTime result; System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB"); cultureInfo.Calendar.TwoDigitYearMax = […]

使用c#在sql数据库中插入datetime值

如何将日期时间值插入到SQL数据库表中,其中列的类型是datetime?