在串行通信C#中设置应用的日期和时间

时间:2014-12-04 07:20:29

标签: c# datetime

我正在开发WPF应用程序。

我的应用程序通过使用串行通信的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; }
    }

我正在获取日期时间并尝试设置我的申请日期和时间。 它会通过我在课堂上创建的属性设置我的申请的日期和时间吗? 有没有最好的办法?

1 个答案:

答案 0 :(得分: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;
  // …
}