簡體   English   中英

如何測試12:00 AM之前的8:00 PM有效?

[英]How to test that 8:00 PM is valid prior to 12:00 AM?

所有,

我最近發布了一個有關限制用戶登錄4小時的問題,並獲得了很好的反饋/答案。

但是我遇到了一個讓我感到困惑的方案。

客戶從下午8:00到第二天的12:00 AM進行登錄-總共4個小時。 但是,我的代碼看到時間已過8:00 PM,而不是上午12:00之前的8:00 PM。

我如何讓系統將8:00 PM視為第二天12:00 AM之前尚未過去的時間?

這是我的代碼,使用帶有AM和PM的12小時制-不是UTC或24小時制:

var orderTime = Convert.ToDateTime(orderDate); // 8:00 PM
var expirationTime = orderTime.AddHours(4); // 12:00 AM of the next day

// timeRemaining should be 4 hours but is 0
// DateTime.Now is 8:00 PM of the current day
// so timeRemaining = 8:00 PM - 12:00 AM (should be 4 hours) 
var timeRemaining = expirationTime - DateTime.Now;

// should be greater than 0 since timeRemaining is actually 4 hours (8:00 PM up to 12:00 AM of next day)
// but fails seeing it as passed
if (timeRemaining < TimeSpan.Zero)                     
    Response.Redirect("TimedOut.aspx");

如何使這種情況有效? 也就是說,系統將8:00 PM視為第二天12:00 AM之前尚未過去的時間嗎?

謝謝你的幫助!

您的代碼對我來說工作正常。 我相信這是您未在此處顯示的代碼或出於其他一些愚蠢的原因。 我正在測試以下代碼(及其許多變體):

// force the date format to be 12hour like in US
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

DateTime start = DateTime.Parse("1/1/2013 7:00 PM").ToUniversalTime();
DateTime end = start.AddHours(5); // returns 1/2/2013 12:00:00 AM as it should

Console.WriteLine(end - start); // 05:00:00
Console.WriteLine((end - start) > TimeSpan.Zero); // True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM