2013-07-12 67 views
0

首先,道歉问问题已被问过,但即使与例子,我没有得到预期的结果。日期时间格式无法正确显示

我所要做的就是显示当前时间,但是我注意到datetime格式是9:5:6而不是09:05:06。我阅读了有关格式化DateTime的示例,但由于某种原因它不起作用。任何人都可以告诉我哪里出错了?

感谢您一如既往的帮助。

public MainWindow() 
    { 
     InitializeComponent(); 

     DispatcherTimer dispatchTimer = new DispatcherTimer(); 
     dispatchTimer.Tick += new EventHandler(dispatchTimer_Tick); 
     dispatchTimer.Interval = new TimeSpan(0, 0, 1); 
     dispatchTimer.Start(); 
    } 

    private void dispatchTimer_Tick(object sender, EventArgs e) 
    { 
     var hour = DateTime.Now.Hour.ToString(); 
     var min = DateTime.Now.Minute.ToString(); 
     var sec = DateTime.Now.Second.ToString(); 
     var today = hour + ":" + min + ":" + sec; 
     label1.Content = today; 
     textBlock1.Text = today; 
     button1.Content = today; 
    } 
+0

感谢Corak神速的答案。 – ullevi83

+0

比@Oded慢,所以我删除了评论并向上投票。 – Corak

回答

9

只需使用一个custom format string

var today = DateTime.Now.ToString("HH:mm:ss"); 

还是standard one

var today = DateTime.Now.ToString("T"); 
+2

这是正确的解决方案。如果在像“时间分隔符”是“”的“孟加拉语(印度)”这样的文化中使用,它会以例如“ “17.18.19”。 –

+2

'var today = DateTime.Now.ToString(“T”);'then? – Corak

+0

谢谢,谢谢,三次谢谢。很容易,当你知道如何! – ullevi83

0
string now = DateTime.Now.ToString("HH:mm:ss"); 

检查TimeZoneInfo类更详细的全球化。

+0

你为什么要拿一个日期,将它转换成一个字符串,然后分割该字符串来取日期部分?只需获取日期并将其分配给必填字段即可。 –

+0

为什么不'var now = DateTime.Now; var hours = now.ToString(“HH”); var minutes = now.ToString(“mm”); var seconds = now.ToString(“ss”)'?但即便如此,为什么还要有单独的变量呢? – Corak

+0

老实说,我以为他想要它的部分,但后来我看到他结合他们,所以我的坏:) –

0

我认为有很多方法可以解决这个问题。

个人,并让事情变得简单,我会做这种方式:

private void dispatchTimer_Tick(object sender, EventArgs e) 
{ 
    string wTime = DateTime.Now.ToString("HH:mm:ss"); 
    // OR THIS WAY 
    string wTime2 = DateTime.Now.ToString("T"); 

    label1.Content = wTime; 
    textBlock1.Text = wTime; 
    button1.Content = wTime; 
} 

但是,如果你想为一些原因,让您最初的逻辑那么这将做到这一点。

private void dispatchTimer_Tick(object sender, EventArgs e) 
{ 
    string hour = DateTime.Now.Hour.ToString("00"); 
    string min = DateTime.Now.Minute.ToString("00"); 
    string sec = DateTime.Now.Second.ToString("00"); 
    var today = hour + ":" + min + ":" + sec; 
    label1.Content = today; 
    textBlock1.Text = today; 
    button1.Content = today; 
} 

您也不妨看看这个http://msdn.microsoft.com/en-us/library/az4se3k1.aspx