如何强制用户每天仅输入一次数据
本文关键字:一次 数据 输入 何强制 用户 每天 | 更新日期: 2023-09-27 18:35:26
UPDATE 2
我已经找到了这些,但它们依赖于纬度。是否有任何服务可以仅使用时区作为参数为我提供结果。
http://www.geonames.org/export/web-services.html#timezone
http://worldtime.io/api/geo
更新 1
我没有使用任何服务器。数据存储在SQLite中。
我正在为 Windows Phone 8 创建一个健康应用程序。其中,应允许用户每天输入某些数据。因此,一旦用户添加了今天日期的数据,他/她就只能在第二天输入数据。首先,我想将最后一个有效日期保存在独立存储中,并将其与当前日期进行比较。如果差异大于 24 小时,则应允许用户输入数据。
现在的问题是,如果用户从他/她的手机更改日期,DateTime.Now
值发生变化,因此逻辑出错。那么我应该怎么做才能比较日期呢?
最后有效日期应由服务器而不是用户决定。因此,当用户进行更新时,您将他们的最后有效日期更新为当前服务器日期,而不是用户的日期。因此,在更新之前,您始终将用户的上次有效日期(即他们上次更新的服务器日期)与当前服务器日期进行比较,并查看它们是否相隔不到 24 小时。
在服务器端和客户端进行验证。在这种情况下,服务器端验证是必须的,但最好进行客户端验证以减少不必要的服务器调用。
如果用户在线,则从在线服务获取时间和日期
如何使用 C# 查询 NTP 服务器
或这个:C#:获取NIST互联网时间
// Convert it to the current timezone if desired
date = date.ToLocalTime();
美国国家标准与技术研究院 (NIST) 是维护时钟并使用网络时间协议 (NTP) 提供时间的机构。所以NIST是时钟,NTP是通过互联网分配时间的方式和方法
如果您的数据库存储在用户设备上,并且不使用与某种服务器的任何网络连接,则只需信任您的用户即可。
只需DateTime.UtcNow.Today
存储用户输入数据的日期即可。不要拿DateTime.Now
或DateTime.UtcNow
检查是否已经24小时过去了。在第二种情况下,用户将无法在第一天上午 11 点和第二天上午 10 点输入数据。
此外,我会考虑不要禁止每天输入数据超过一次。也许您应该向用户显示一条消息,说明他今天已经输入了一些数据,并允许他更改已经给定的数据。
如果用户真的喜欢通过更改设备的日期时间来伪造某些数据,而不是简单地让它做他。如果应用程序完全在本地运行,没有任何服务器,他只会欺骗自己。