我们正在编写一个可以被其他团队访问的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
。