【问题标题】:how to get universal date time in c#如何在c#中获取通用日期时间
【发布时间】:2014-07-25 07:54:42
【问题描述】:

我在开发图书馆管理系统时遇到了严重的情况,如果有人还书,有一个功能可以将图书详细信息插入数据库,以系统日期为归还日期,然后比较借阅日期和归还日期我可以计算出罚款如果有的话,但事情是通过将系统日期更改为当前日期之上的前一个日期,任何人都可以退回这本书而不会受到罚款,因为它将系统日期插入为当前日期并且它现在更改了。

示例:

认为贷款期限为 7 天

借用日期是 11/05/2012

返回日期 20/05/2012(认为这是今天,它是系统日期)

现在有2天的延迟(所以要计算罚款)

如果我将系统日期更改为上一个日期,例如 2012 年 5 月 15 日,那么它会将系统日期作为更改日期,因此可以有一本书退回而不计算罚款,而必须计算罚款?

【问题讨论】:

  • 您可以自己托管服务器,在这种情况下您可以控制时钟,但您知道无论系统是否说,店员总是可以选择不向客户收费...
  • 最终用户能否更改系统和/或数据库服务器上的日期?
  • 认为 CMOS 电池没电了?然后突然更改系统日期并将非法值插入数据库?

标签: c# mysql sql date datetime


【解决方案1】:

没有办法以编程方式执行此操作,因为您总是会在系统运行的电脑上获得设置的日期。

您可以做的是从另一台电脑/服务器获取当前日期,或者在该电脑上配置管理员权限,这样任何人都无法更改系统时间。

勾选第一个选项:get ACTUAL date time and not system date time in C#

【讨论】:

    【解决方案2】:

    您可以在另一台机器上设置您的 mysql 数据库,未经授权的人无法进行更改,然后使用 mysql 日期/时间函数。

    例如像这样定义您的退货表:

    create table book_return (book_id int, return_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
    

    那么您可以利用这段时间进行计算。

    阅读有关 mysql 日期/时间函数的更多信息: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

    另外 - 如果你必须在一台机器上安装 mysql db + 你的应用程序,你可以尝试从 NTP 服务器获取当前时间,但这可能是矫枉过正;) How to Query an NTP Server using C#?

    【讨论】:

    • 我没有使用数据库的当前日期,因为如果我更改我的数据库服务器(美国到 AUG),那么服务器时间也会改变?
    • 如果您将服务器从一个时区移动到另一个时区,那么服务器时间当然会改变几个小时,但您可以检测到这一点并进行补偿。
    【解决方案3】:

    您必须将数据库放在一个集中式系统中,该系统必须是 Windows 应用程序或基于 Web 的服务器。所以请尝试使用服务器时间。为列/字段创建默认值..

    CREATE TABLE BookDetails (BookId int, ReturnedTime datetime DEFAULT getdate())

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 1970-01-01
      • 2013-08-17
      • 2017-08-20
      • 2010-12-15
      • 1970-01-01
      • 2011-12-13
      • 2010-11-04
      相关资源
      最近更新 更多