2014-12-04 46 views
-2

我正在使用WPF應用程序。設置串口通信的應用日期和時間C#

我的應用程序正在通過使用串行通信的comport與另一個應用程序交談。 另一個應用程序正在向我的應用程序發送命令來設置我的應用程序的日期和時間。 我創造了日期和時間類是這樣的:

public class MyApplicationDateTime 
{ 
    /// <summary> 
    /// Year Varibale 
    /// </summary> 
    private UInt16 year; 

    /// <summary> 
    /// Minute Varibale 
    /// </summary> 
    private byte month; 

    /// <summary> 
    /// Day Varibale 
    /// </summary> 
    private byte day; 

    /// <summary> 
    /// Hour Varibale 
    /// </summary> 
    private byte hour; 

    /// <summary> 
    /// Minute Varibale 
    /// </summary> 
    private byte minute; 

    /// <summary> 
    /// Second Varibale 
    /// </summary> 
    private byte second; 

    /// <summary> 
    /// Initializes a new instance of the DeviceDateTime class 
    /// </summary> 
    public DeviceDateTime() 
    { 

    } 

    #region Property 
    /// <summary> 
    /// Gets or sets Year Value 
    /// </summary> 
    public UInt16 Year 
    { 
     get { return this.year = Convert.ToUInt16(DateTime.Now.Year); } 
     set { this.year = value; } 
    } 

    /// <summary> 
    /// Gets or sets Month Value 
    /// </summary> 
    public byte Month 
    { 
     get { return this.month = Convert.ToByte(DateTime.Now.Month); } 
     set { this.month = value; } 
    } 

    /// <summary> 
    /// Gets or sets Day Value 
    /// </summary> 
    public byte Day 
    { 
     get { return this.day = Convert.ToByte(DateTime.Now.Day); } 
     set { this.day = value; } 
    } 

    /// <summary> 
    /// Gets or sets Hour Value 
    /// </summary> 
    public byte Hour 
    { 
     get { return this.hour = Convert.ToByte(DateTime.Now.Hour); } 
     set { this.hour = value; } 
    } 

    /// <summary> 
    /// Gets or sets Minute Value 
    /// </summary> 
    public byte Minute 
    { 
     get { return this.minute = Convert.ToByte(DateTime.Now.Minute); } 
     set { this.minute = value; } 
    } 

    /// <summary> 
    /// Gets or sets Second Value 
    /// </summary> 
    public byte Second 
    { 
     get { return this.second = Convert.ToByte(DateTime.Now.Second); } 
     set { this.second = value; } 
    } 

我越來越日期時間和嘗試設置我的應用程序的日期和時間。 它是否會通過我在課堂上創建的屬性設置我的應用程序的日期和時間? 有什麼最好的辦法嗎?

+2

不是答案:使用DateTime來保存應用程序的日期/時間有什麼問題? – Richard 2014-12-04 07:23:33

+2

你應該重新提出你的問題,真的很難理解你想要做什麼。另外,正如@Ricard所說,爲什麼不使用'DateTime'? – Gimly 2014-12-04 07:25:39

+0

那麼,它會通過屬性設置字段值,但下次您將調用getters時,值將被「實際」('DateTime.Now')值覆蓋。 – 2014-12-04 07:27:59

回答

0

讓我們考慮一個屬性的實現:

public UInt16 Year 
{ 
    get { return this.year = Convert.ToUInt16(DateTime.Now.Year); } 
    set { this.year = value; } 

}

每次你得到這個屬性後,將其從系統的當前日期重置。

因此,你會從來沒有看到你設置的任何值。

建議:不要做任何額外的東西在你的屬性:刪除私有字段,並使用自動屬性:

public UInt16 Year { get; set; } 
public byte Month { get; set; } 
public byte Day { get; set; } 
// … 

,然後有一個單獨的方法,以重置爲當前日期/時間:

public void ResetToSystemTime() { 
    var now = DateTime.Now; 
    Year = (UInt16) now.Year; 
    // … 
}