我们正在编写一个可以被其他团队访问的dll。我们的要求之一是,传递的每个datetime都有一个datetimekind.utc。
但是,我们没有强制执行这个导致错误的要求。所以我们想知道怎么才能执行。
我们有几个想法:
编写一个方面来检查传递给方法的每个参数。当有人破例的时候!=协调世界时。当传递包含日期时间的对象时,此操作有效,但不起作用。
使用自定义对象utcdatetime更改所有日期时间。
这可能有效,但需要确保替换每个datetime和对datetime的所有调用。会像这样:

public class UtcDateTime
{
  private DateTime _dateTime;
  public UtcDateTime(DateTime dateTime)
  {
    if(dateTime.Kind != DateTimeKind.Utc)
    {
        throw new ArgumentException();
    }
    _dateTime = dateTime;
  }
}

有更好的办法吗?

最佳答案

使用自定义对象utcdatetime更改所有日期时间。
如果您想这样做并用其他内容替换DateTime,那么您最好使用包含时区信息的DateTimeOffset

10-04 16:42