`

对DateTime进行强制约束

阅读更多

在程序中需要显示日期的时候,我们往往习惯的使用DateTime.Now.ToString(),却不知道这样做往往存在有一些隐患。

时间的表现形式是与当前系统的文化区域相关联的。如果你的操作系统的区域设置是中国,对于DateTime的ToString()方法,它等同于DateTime.Now.ToString("G"new CultureInfo("zh-CN")),显示为2009-4-16 18:20:31,而若你的区域设置是美国,那么将在程序中显示4/16/2009 6:03:11 PM,这样,在代码中使用DateTime.Now.ToString(),如果程序一旦迁移到其它国家的机器上,程序中显示和应用中的时间字符串不一致,这会导致一些比较难排查的异常。

我就曾遇到一个这样的问题,在本地写了一个写日志方法,使用当前的日期作为文件名,在本地没有任何问题,会正确创建出2009-4-16.log这样的文件,但当程序部署到美国的服务器后,此方法便会报错。因为根据美国服务器的区域设置,程序会创建类似4/16/2009.log这样的日志文件,但是很显然,由于/的存在,windows是无法存在这种文件名的,所以会失败。还有就是在数据库中存入的DateTime,往往生产环境在美国,写入数据库的时间是4/16/2009 6:03:11 PM这种形式,但在中国的支持程序中,却是用处理2009-4-16 18:20:31形式的方法,这样也会引起一些麻烦和错误。

所以,在程序中我们需要保证时间显示的一致性,尽量不要采用DateTime.Now.ToString()这种形式,而是采用类似于DateTime.Now.ToString("G"new CultureInfo("zh-CN"))的形式,为DateTime的表示进行强制约束,这样项目中会减少一些出错概率的。嫌这种写法麻烦的话,可以讲为DateTime添加一个匿名方法,这样就可以方便调用了。代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->    public static class DateTimeExtend
    {
        
public static string ToStdString(this DateTime dt)
        {
            
return DateTime.Now.ToString("G"new CultureInfo("zh-CN"));
        }
    }

 

好了,这样的话在程序中的任何地方都可以使用ToStdString()方法来将一个DateTime转换为一个标准string了,这个string在任何环境的值都是一样的了。

分享到:
评论

相关推荐

    MySQL中的唯一性约束与NULL详解

    2. 使用“NOT NULL”约束来强制列必须有值,这样可以避免在唯一性索引中出现NULL值。 3. 对于允许NULL的列,应谨慎考虑其在业务逻辑中的含义和可能的重复情况。 理解MySQL如何处理NULL值对于正确设计数据库和有效地...

    【原创精华】sql server 约束详解

    非空约束强制指定列的值不能为NULL,确保该列始终具有有效数据。例如,在创建用户登录信息表时,`LoginId`列可能被设置为非空,以确保每个用户都有一个有效的登录ID。 ```sql CREATE TABLE Users ( LoginId ...

    mysql完整性约束实例详解

    - 该约束强制字段不允许存储NULL值。如果尝试插入NULL值,操作将失败。 - 示例:`name char(10) NOT NULL` 2. **DEFAULT** 约束: - DEFAULT用于为字段提供一个默认值,当插入新记录时,如果没有为该字段提供值...

    ASP.NET Core中自定义路由约束的实现

    例如,可以根据数据库中的数据来约束路由参数的值,或是根据用户认证的状态来决定对某些路由的访问权限。 在实现自定义路由约束时,开发者需要确保Match方法逻辑的正确性和效率,避免过度复杂的匹配逻辑导致性能...

    sqlserver达标考试题及答案.pdf

    15. 日期数据类型:SQL Server 中的日期数据类型包括 DATE、TIME、DATETIME 和 DATETIME2 等。 【逻辑运算符 AND 和 OR】 - AND 运算符:当两个条件都为真时,结果才为真。 - OR 运算符:只要其中一个条件为真,...

    Test cases.docx

    对每一条插入数据进行验证,以确保它们符合表中相应列指定的数据类型。 7. **数据类型长度测试**:针对具有特定长度限制的数据类型,比如定义为integer(9)的“SSN#”列,应编写测试用例来验证输入的SSN#值是否符合...

    SQLServer 高级篇

    在SQL Server中,约束是用来强制数据完整性和一致性的规则。它们被用来确保存储在表中的数据满足一定的条件。约束可以在创建表时或者之后添加到表上。 1. **唯一约束(UNIQUE Constraints)**: - 唯一约束确保列...

    sql server2000复习题

    约束用于强制数据的完整性和一致性,常见的约束有主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、唯一约束(UNIQUE)和检查约束(CHECK)。 ### SQL Server 2000的备份与恢复 SQL Server 2000提供了强大的...

    数据库学习入门数据库基础.docx

    * 非空约束 (NOT NULL):定义了表级的强制规则,数据的完整性。 * 唯一约束 (UNIQUE):不允许列中的数据重复。 这些知识点是数据库学习的基础,了解这些概念和语法可以帮助您更好地学习和使用数据库。

    create table

    `约束条件`则是对数据的限制,如 PRIMARY KEY(主键)、FOREIGN KEY(外键)、UNIQUE(唯一性)、NOT NULL(不允许为空)等。 1. **数据类型**:选择合适的数据类型对于优化存储和查询性能至关重要。例如,使用 INT...

    SQL的入门知识及语法介绍

    * 约束:定义了表级的强制规则,确保数据的完整性。 约束主要包括: * 唯一约束(UNIQUE):保证使用唯一约束的某一列或者一组列中没有相同的值,即保证列的值得唯一性。 * 主键约束(PRIMARY KEY):保证使用主键...

    sqlserver达标考试题及答案.docx

    - **约束**是用来确保数据完整性的机制之一,通过定义表结构中的各种约束来强制执行业务规则。 6. **DATEADD 函数** - `DATEADD(day, 10, '2005-12-22')` 表示从2005年12月22日开始加上10天的结果日期。 7. **...

    SQLServer数据库基础教程及习题 ppt doc

    SQL Server支持多种数据类型,如数值类型(INT, DECIMAL, FLOAT等)、字符类型(VARCHAR, NVARCHAR, CHAR, NCHAR等)、日期时间类型(DATE, TIME, DATETIME2等)、二进制类型(BINARY, VARBINARY, IMAGE等)以及特殊...

    mysql建表字段,相关内容 MySQL学习练习

    5. **非空约束**:NOT NULL约束强制列的值不能为NULL,确保数据的完整性和一致性。 6. **默认值**:可以为列设置默认值(DEFAULT value),当插入新行时,如果没有提供该列的值,系统会自动使用默认值。 7. **索引...

    数据库表PPT学习教案.pptx

    例如,`NOT NULL`约束强制字段非空,`UNIQUE`约束确保字段值的唯一性,`FOREIGN KEY`约束定义外键关系以维护数据完整性。 6. **建立索引** 索引是提高查询性能的重要工具。通过在列上创建索引,可以快速定位数据。...

    数据库练习PPT学习教案.pptx

    - 在进行表连接前,先对数据进行筛选,减少不必要的数据处理。 3. 数据完整性类型: - 实体完整性:确保表中的主键值唯一且非空,这是关系数据库的基础。 - 域完整性:通过使用数据类型、检查约束等保证列值的...

    MS SQLServer数据库结构读取工具

    3. **数据类型**:数据类型定义了数据库中字段可以存储的数据种类,如整数(INT)、字符(VARCHAR)、日期时间(DATETIME)、布尔(BIT)等。选择合适的数据类型能确保数据的正确性和存储效率。 4. **长度**:字段...

    SQL Server 2005数据库开发与实现习题

    在本题中,使用`CONVERT`将`datetime`类型的`LastContact`字段转换为`nvarchar`类型,以便以特定格式显示日期。 - **CAST函数**:与CONVERT类似,但更简洁易用,用于将表达式转换为不同的数据类型。

    数据库设计2

    在关系型数据库中,非空约束(NOT NULL)可以强制字段必须有值,避免因为空值导致的异常情况。 价格相关字段单位都设定为分,这是一个常见的做法,尤其是在处理货币数据时,通过使用整数避免了小数点带来的精度问题...

    9.Schema与数据类型优化1

    在MySQL中,`NULL`值会占用额外的空间,而`NOT NULL`则强制字段必须有值,对于某些关键字段,这可能是必要的。 数据类型的选择对数据库性能有显著影响。在MySQL中,有多种数据类型可供选择,包括整型(如`INTEGER`...

Global site tag (gtag.js) - Google Analytics