2012-04-16 3 views
0

Im имея diffculty с DateTime, когда его отображаются на стороне клиента от моего отдыха веб-службы, мой клиент сторона МОФ приложение код выглядит следующим образом:даты и времени проблема отображения с WebService

public MainWindow() 
    { 
     InitializeComponent(); 
     string uriGroups = "http://localhost:8000/Service/Student"; 
     XDocument xDoc = XDocument.Load(uriGroups); 

     foreach(var node in xDoc.Descendants("Student")) 
     { 

      GroupBox groupbox = new GroupBox(); 
      groupbox.Header = String.Format(node.Element("StudentID").Value); 
      groupbox.Width = 100; 
      groupbox.Height = 100; 
      groupbox.Margin = new Thickness(2); 

      TextBlock textBlock = new TextBlock(); 
      textBlock.Text = String.Format(node.Element("FirstName").Value + " " + (node.Element("LastName").Value)); 
      textBlock.TextAlignment = TextAlignment.Center; 

      TextBlock textBlock1 = new TextBlock(); 
      textBlock1.Text = String.Format(node.Element("TimeAdded").Value); 
      textBlock1.TextAlignment = TextAlignment.Center; 
      textBlock1.VerticalAlignment = VerticalAlignment.Bottom; 

      StackPanel stackPanel = new StackPanel(); 
      stackPanel.Children.Add(groupbox); 

      stackPanel.Children.Add(textBlock); 
      stackPanel.Children.Add(textBlock1); 
      stackPanel.Margin = new Thickness(10); 

      MainArea.Children.Add(stackPanel); 
     } 

    } 

И моя служба выглядит следующим образом:

public class Student 
{ 
    .... 
      public DateTime TimeAdded; 
     public string TimeAddedString 
     { 
      get 
      { 
       return this.TimeAdded.ToString("dd/MM/yyyy hh:mm:ss"); 
      } 
     } 

Но результат выглядит следующим образом:

enter image description here

Есть ли способ для моего кода приложения на стороне клиента, чтобы усечь это или переформатировать его?

+1

Это домашнее задание? Если это так, есть тег для этого –

ответ

3

Вы можете бросить его в DateTime, а затем использовать String.Format

Вот пример с одного формата вы можете использовать:

String.Format("{0:M/d/yyyy}", ((DateTime)node.Element("TimeAdded").Value)) 

Вы также можете использовать DateTime.ToString(FORMAT)

((DateTime)node.Element("TimeAdded").Value).ToString("d"); 

I сделали предположение, что .Value возвращает object, но если он возвращает DateTime, вы можете отказаться от приведения.

Если вы получаете строку в вашем клиенте, то вам нужно будет использовать DateTime.Parse

(DateTime.Parse(node.Element("TimeAdded").Value)).ToString("d"); 
String.Format("{0:M/d/yyyy}", DateTime.Parse(node.Element("TimeAdded").Value)) 
+0

Невозможно преобразовать строку типа в system.datetime? Я думал, что сделал бы это ... –

+0

Нах все тот же, даже с нижним отредактированным кодом. –

+0

Какие-нибудь идеи, как я мог форматировать эту клиентскую сторону? –

2

Вы используете TimeAdded ... но я думаю, что вы должны использовать TimeAddedString

textBlock1.Text = String.Format(node.Element("TimeAdded").Value); 

Должно быть

textBlock1.Text = String.Format(node.Element("TimeAddedString").Value); 

Я считаю,

+0

Nah, который выдает исключение –

+1

Вы видите, где я собираюсь с этим? У вас есть TimeAdded как дата ... и это то, что вы, кажется, используете в textBlock1.Text ... вам может потребоваться изменить вашу службу, чтобы TimeAddedString была видимой (что я предположил, что это будет потому, что это Public). –

+0

TimeAddedString должен был просто вернуть дату в правильном формате, в котором он не работал. Поэтому я нахожусь в новых предложениях. –

Смежные вопросы