public FsUnixTime(System.DateTimeOffset time) { if (time < FsUnixTime.EpochDateTime) { throw new System.ArgumentOutOfRangeException(nameof(time)); } long v = (long)time.Subtract(FsUnixTime.EpochDateTime).TotalMilliseconds; if (v < 0) { throw new System.ArgumentOutOfRangeException(nameof(time)); } this.MillisecondsSinceEpoch = v; }
public override IValue Subtract(Context context, IValue value) { if (value is DateTimeValue) { System.DateTimeOffset ldt = this.Value.ToLocalTime(); System.DateTimeOffset rdt = ((DateTimeValue)value).Value.ToLocalTime(); TimeSpan res = ldt.Subtract(rdt); return(new PeriodValue(0, 0, 0, res.Days, res.Hours, res.Minutes, res.Seconds, res.Milliseconds)); } if (value is PeriodValue) { return(this.minus((PeriodValue)value)); } else { throw new SyntaxError("Illegal: DateTime - " + value.GetType().Name); } }