美国年月日如何表示?
前面很多答案都正确,但不够完整,我来做一个完整的解答。 时间日期和时间的表达法有很多,在美国学习或生活过的人应该知道,在美国你几乎不需要“点”数来表示时间,因为每件事都只涉及一天中某个时间点,或者几天中的某一天。
比如发邮件,发完就完了,什么时候收到通知的「送达」和「读取」都不需要考虑;寄信也一样,投到邮箱就能发送成功,是否送达和对方能否在正确的时间点开信函来读取内容也不需要考虑;发送短信、微博等也是一样,发出提示后就完成了过程,何时到达无需关心。所以美国的计算机程序也很少用到「时间戳(timestamp)」这个概念,因为不管什么操作系统,只要操作顺利,任何应用程序都很难自己获取到系统级的时间信息。当然对于人类来说,记录时间就简单多了——不论电脑还是手机,都会自动记录当前日期和时间,需要的时候直接查看即可。 而美国人最常用的表示方法就是把日期的每个组成部分拆开来表示,从年、月、日到日子,再组合形成完整的表示形式。这样做的好处是可以把不同精度和格式的日期单独区分开,从而完成不同的任务。比如在网页上搜索历史数据,只需输入某天的年份、月份即可,浏览器会自动寻找本地硬盘上的相应文件来完成搜索动作。而在数据库里查询同一年的同一天的数据就方便多了,因为同一天的每一分钟的每一秒的每一毫秒的数据量可能很大,如果使用传统的字符串比较法来查找,效率会很低下。而如果采用日期分隔的方式来查询,我们就可以按照年月日来进行划分,然后按照时间顺序排列,最后找到目标数据。
这种表示方法最大的好处就是可以根据具体需求灵活地选取需要的部分进行运算。 举个例子,假设现在要统计2014年7月到2015年3月期间所有周六上午10点到11点的文章(以美东时间为例),我们可以这样写Sql语句: Select * From Table Where DATE_FORMAT(now(),'%Y-%m-%d %H:%i') >= '2014-07-01 10:00:00' And DATE_FORMAT(now(), '%Y-%m-%d %h:%i') < '2015-03-31 11:00:00' 而采用传统的String类型存储日期时,我们就只能通过SqL语句的形式来查询整个期间内所有的周六的所有时间和所有内容的组合了。这样即使只是查询两天之内的时间,算法上也要先计算出相差的天数然后再加一,复杂度是O(n+m),比使用日期分隔形式的查询函数复杂很多。