2014-03-24 41 views
0

我想要一種方法,它可以通過窗體訪問服務,以便我可以使用此方法在日期時間選擇器中生成隨機日期。它只是不起作用,但我有兩個DTP的叫做dtp_Current和dtp_New在服務中生成隨機日期和時間

這是在窗體上訪問,我有兩個按鈕說,之前和之後,當點擊之前,你猜測新生成的日期將是在當前日期之前,如果在猜測之後點擊它會在當前生成的日期之後點擊。我必須這樣做使用服務但

公衆詮釋RandomDate()

是我想要什麼服務要調用的方法,我怎麼會去這樣做,所以當後按鈕點擊它會檢查dtp_Current日期,看看是否dtp_New較大

我希望這是有道理的

摘要: 有一個形式和服務引用 需要的服務參考產生dtp_Current 隨機日期,那麼當前或點擊後產生dtp_New 一個新的日期,然後檢查是否dtp_New是大於或小於dtp_Current

+1

不幸的是,你的問題只有部分意義;也許它會更清楚你是否可以添加一些代碼來表明究竟是什麼問題?你有多遠進來你的任務?你究竟在哪裏卡住? – Kjartan

+0

如果我誠實不太遠。我有一個表格,但它也有一個服務參考。我需要在開始時在服務中生成日期時間,但我不知道如何在日期時間選擇器中生成新日期 – user3432387

+0

我添加了一個摘要,我認爲它更加明確 – user3432387

回答

0

在我看來,這裏的主要問題很簡單,就是創建一個生成隨機日期的方法。

一個方法來做到這一點,並保持一定程度的控制你得到的日期,只是爲日期,月份和年份生成隨機數。對於一年中,你可以這樣做:

Random r = new Random(); 

int randomYear = r.Next(1990, 2015); // random year between 1990 and 2014  
int randomMonthNr = r.Next(1,13); 
int maxDayNr = DateTime.DaysInMonth(randomYear, randomMonthNr); 
int randomDayNr = r.Next(1, (maxDayNr + 1)); 

做日期和月份類似的東西,只是用在:

var randomDate = new DateTime(randomYear, randomMonthNr, randomDayNr); 

(注意:首先生成一個月,然後find out the number of days in the resulting month,並用其作爲在生成日期的數字時的上限,因此您可以獲得2月份的最大28或29等)。

一旦日期()創建,您可以使用<=>=(帶或不帶=)簡單地對它們進行比較。如果您需要在服務範圍內比較它們,只需將DateTime作爲參數發送到服務,然後在那裏進行比較。


更新:客戶端Visual Studio項目下連接到服務

打開該文件夾。右鍵單擊服務參考,然後選擇View in Object Browser。在那裏,你應該看到服務中類型和命名空間的層次結構。尋找一種類似於YourServiceNameClient的類型。這將是一種自動生成的類型,可用於連接到您的服務(Client將僅附加到服務參考標識的類型)。

這樣使用它:

var yourServiceReference = new YourServiceNameClient(); 
var yourGeneratedDate = yourServiceReference.GetNewRandomDate(); 

這顯然假定GetNewRandomDate()是你已經在你的服務暴露的方法。希望這是有幫助的...

+0

對不起,我不知道這個如此密集。這會在服務中出現嗎?我不知道.Dump做了什麼,我需要它在現有的DTP中生成一個隨機數,而不是新的。對不起,這個D如此無用: – user3432387

+0

糟糕,appologies - 'Dump()'不應該在那裏。所有這些代碼確實是在1990年到2014年範圍內產生一個隨機int。我的觀點是,你可以在月份和日期做同樣的事情 - 即。 genaret爲這個日期的三個「部分」分配了三個隨機數字,這樣就能夠以簡單的方式控制和優化創建日期。您應該將該代碼放在任何需要生成隨機日期的地方。 – Kjartan

+0

更新我的答案,更清晰一點。 – Kjartan

2

要在這裏生成隨機日期是C#代碼:

DateTime RandomDay() 
    { 
     DateTime start = new DateTime(1900, 1, 1); 
     Random gen = new Random(); 

     int range = (DateTime.Today - start).Days;   
     return start.AddDays(gen.Next(range)); 
    } 
+0

我試過這個,但我已經有兩個dtp的名爲dtp_Current和dtp_New在Windows形式和我需要在這些而不是新的日期生成。 – user3432387

+0

我想你應該分享你的代碼,以便更好地理解問題。 –

0

您可以使用random.Next以毫秒爲單位的使用時間。