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

本文关键字:应用程序 日期 时间 设置 通信 | 更新日期: 2023-09-27 18:33:14

我正在研究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; }
    }

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

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

让我们只考虑一个属性实现:

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;
  // …
}