DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的? 你得知道a是谁让他变化的。
实现INotifyPeropertyChanged接口 在事件参数中记录一下上次值改变的时间事件处理中,判断一下这个时间 var now = DateTime.Now; if((now - e.PreviousChangeTime).TotalMinutes == 30) { 更新b的值 e.PreviousChangeTime = now; }
a 是我从现场设备采集上来的 DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的? 你得知道a是谁让他变化的。
DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的? 你得知道a是谁让他变化的。 那就好办了,只要在你每次采集之后算出b的值就行了。 如果不是时间类型,你可以转换成时间算。
没懂 假如a是一个电机的转速,然后b一直是a半小时之前的数,a一直在变化,b也一直会变化的。 DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的? 你得知道a是谁让他变化的。 那就好办了,只要在你每次采集之后算出b的值就行了。 如果不是时间类型,你可以转换成时间算。
DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值 DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的? 你得知道a是谁让他变化的。 那就好办了,只要在你每次采集之后算出b的值就行了。 如果不是时间类型,你可以转换成时间算。 当a变化时,你就重新计算一次b的值不就行了。b的值不就是基于a来确定的吗?你可以用一个事件来实现,当a的值变化时,触发b的setvalue事件,然后b的当前值就等于此时a的值往前推半小时。
用一个结构数组记录 A 的每一次变化和发生的时间,当 B 需要等于 A 时,向前推半个小时,读取A值即可。
DateTime b = a.AddMinutes(-30);
DateTime b = a.AddMinutes(-30);
DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);
原理是一样的
一开始
value.add(a);
b=a;
这时
b=value[0]=a
30钟后
value.add(a);
这时value.count>=2
b=value[value.count-2]=value[0]
当然,这时你可以为了减少内存开支,当b获得value[0]的值后
value.RemoveAt(0)把上一次的值给删除掉,这里list.count又变会了1
DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的?
你得知道a是谁让他变化的。
在事件参数中记录一下上次值改变的时间事件处理中,判断一下这个时间
var now = DateTime.Now;
if((now - e.PreviousChangeTime).TotalMinutes == 30)
{
更新b的值
e.PreviousChangeTime = now;
}
if((int)(now - e.PreviousChangeTime).TotalMinutes == 30)
DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的?
你得知道a是谁让他变化的。
DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的?
你得知道a是谁让他变化的。
那就好办了,只要在你每次采集之后算出b的值就行了。
如果不是时间类型,你可以转换成时间算。
假如a是一个电机的转速,然后b一直是a半小时之前的数,a一直在变化,b也一直会变化的。
DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的?
你得知道a是谁让他变化的。
那就好办了,只要在你每次采集之后算出b的值就行了。
如果不是时间类型,你可以转换成时间算。
DateTime b = a.AddMinutes(-30);DateTime a = DateTime.Now;//此处是你需要的值
DateTime b = a.AddMinutes(-30);是不是不重要,关键是你的a是怎么实时变化的。在哪让他变化的?
你得知道a是谁让他变化的。
那就好办了,只要在你每次采集之后算出b的值就行了。
如果不是时间类型,你可以转换成时间算。
当a变化时,你就重新计算一次b的值不就行了。b的值不就是基于a来确定的吗?你可以用一个事件来实现,当a的值变化时,触发b的setvalue事件,然后b的当前值就等于此时a的值往前推半小时。