自定义日期时间结构

时间:2010-07-09 05:23:45

标签: c# silverlight windows-phone-7

我正在尝试为0-9的每个数字开发一个带有图像的时钟应用程序。写了一个结构,偶尔给我每个数字。以下是结构。

public struct TimeStruct
{
    public DateTime dt
    {
        get
        {
            return DateTime.Now;
        }
    }
    public int s
    {
        get
        {
            return dt.Second;
        }
    }
    public int s2
    {
        get
        {
            return s % 10;
        }

    }
    public int s1
    {
        get
        {
            return s / 10;
        }
    }
    public int m
    {
        get
        {
            return dt.Minute;
        }
    }
    public int m2
    {
        get
        {
            return m % 10;
        }
    }
    public int m1
    {
        get
        {
            return m / 10;
        }
    }
    public int h
    {
        get
        {
            return dt.Hour;
        }
    }
    public int h2
    {
        get
        {
            return h % 10;
        }
    }
    public int h1
    {
        get
        {
            return h / 10;
        }
    }
    public int d
    {
        get
        {
            return (int)dt.DayOfWeek;
        }
    }

}

请指导我修改这个结构,这样只有当s1变为0时才应设置prop s2。并且与分钟相同。 使用的技术:Silverlight 平台:Windows Phone 7

使用struct是个坏主意吗?

2 个答案:

答案 0 :(得分:3)

你的意思是“仅当s1变为0时才应设置prop s2” - 当s1 不是 0时,你想要它做什么?您是否正在寻找可以为空的值类型,其中s1在某些情况下会返回空值?

我不得不说,我认为这是一个非常令人困惑的类型。它没有真正的状态 - 它实际上只是一堆静态属性。没有将它作为一堆静态属性实现的任何原因,例如在CurrentDateTime课程?或者只使用DateTime.Now?请注意,如果您向结构询问一堆值,一次一个,那么随着时间的推移,它可能会给您带来不一致的结果。例如,假设时间是1:59:59并且您调用s,然后调用m,然后调用h - 您最终可能会获得59,59,2作为当前时间卷在最后两次通话之间从1:59:59到2:00:00。如果您将<{1}}的值只用一次并询问其所有属性,那么您将获得一致的视图。

答案 1 :(得分:2)

为什么重新发明轮子?使用DateTimeTimeSpan