2012-04-12 61 views
1

當我使用system.datetime作爲我的datamember時,它會在我的datagridview中返回一個奇怪的格式。webservice DateTime意外值?

我的數據成員如下:

[DataMember(Name = "TimeAdded")] 
    public DateTime TimeAdded; 

而我傳遞addStudent看起來是這樣的:

public void AddStudent(Student student) 
    { 
     student.StudentID = (++eCount).ToString(); 
     student.TimeAdded = DateTime.Now; // not important more so the method to get the correct format 
     students.Add(student); 
    } 

我得到的輸出是2012-04-12T03:10:42.8138255+01:00是有辦法解決這一問題?

回答

2

假設你指的是使用standard DateTime format string等,以使您的日期設置爲default(DateTime),那麼你要衙門的回答,如果你不喜歡DateTime是顯示的格式,然後添加另一個屬性到學生的事實。

public class Student 
{ 
    // existing date, don't expose this 
    public DateTime TimeAdded; 

    // expose this instead 
    [DataMember(Name = "TimeAddedString")] 
    public string TimeAddedString 
    { 
     //show as "Monday, January 01, 0001 12:00 AM" 
     get { return this.TimeAdded.ToString("f"); } 
    } 
} 
+0

嘿史蒂夫仍然得到一個可怕的格式與此。這就是我得到的'2012-04-12T03:01:50.9184029 + 01:00' – 2012-04-12 02:02:42

+0

我認爲如果格式是問題,Steve的答案是正確的。你有沒有改變你的DataGridView看看屬性TimeAddedString而不是僅僅是TimeAdded? – yamen 2012-04-12 02:20:09

+0

實際上沒有將其設置爲.Value發送給客戶端時。 – 2012-04-12 02:41:51

1
public class Student 
{ 
    public string TimeAddedString 
    { 
     get 
     { 
      return this.TimeAdded.ToString("dd/MM/yyyy hh:mm:ss"); 
      // your desired format can goes here 
     } 
    } 
} 
public void AddStudent(Student student) 
{ 
    student.StudentID = (++eCount).ToString(); 
    student.TimeAdded = DateTime.Now; // or your desired datetime 
    students.Add(student); 
} 
+0

這給了非常相同的結果原來的問題,因爲日期時間()初始化爲'0001-01- 01T00:00:00' – yamen 2012-04-12 01:40:02

+0

它仍然有可能你想DateTime.Now不DateTime.Today考慮今天初始化到午夜,該屬性被稱爲'TimeAdded'。 – yamen 2012-04-12 01:41:36

+0

到目前爲止,所有的方法仍然給人一種恐怖的格式,我試過了所有的東西,而且它仍然出來。 – 2012-04-12 02:03:22

3

我想你想:

student.TimeAdded = DateTime.Now; 

現在你在一個空的時間正好轉換爲本地時間。

+0

'2012-04-12T03:05:34.2671777 + 01:00'如果我嘗試你的方法衙門,這就是我所得到的。我想要的是時間(正常格式和日期正常格式) – 2012-04-12 02:06:20

0

如果要轉換傳入的學生時添加你需要重新分配它:

public void AddStudent(Student student) 
{ 
     student.StudentID = (++eCount).ToString(); 
     student.TimeAdded = student.TimeAdded.ToLocalTime(); 
     students.Add(student); 
}