- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
引用这个问题的公认答案How do I get the number of days between two dates in JavaScript? .我看到,在函数 parseDate
中:
function parseDate(str) {
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
他是这样做的:
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
即将传递的日期拆分为月、日和年,然后将其传递给 Date
,例如 new Date(year, month, day)
而他可以简单地执行 new Date(str)
并且它会返回相同的结果(不是吗?)。任何人都可以解释这两种方式之间的区别吗?
更新:测试结果:
var str = '1/1/2000'
var mdy = str.split('/')
console.log( new Date(str) ) // Sat Jan 01 2000 00:00:00 GMT+0500 (Pakistan Standard Time)
console.log( new Date(mdy[2], mdy[0]-1, mdy[1]) ); // Sat Jan 01 2000 00:00:00 GMT+0500 (Pakistan Standard Time)
最佳答案
不,它们不一样(即使假设您将在一个月后减去:他在做 mdy[0] - 1
)因为 new Date(str)
需要(按标准,请参阅 §15.9.4.2)仅接受特定格式的日期 ISO 8601( YYYY-MM-DDTHH:mm:ss.sssZ
,另请参阅 this post ,我不会在这里重复):
If the String does not conform to that format [ISO 8601] the function may fall back to any implementation-specific heuristics or implementation-specific date formats.
请注意(如 Royi 在 comments 中指出的那样)还应支持 RFC 2822 (根据 MDN ),但在 JavaScript specifications 中未提及并且 Internet Explorer 不正式支持它(参见 MSDN ,它可以解析一些相似但不相同的东西)。
在该代码中,他们使用特定的语言环境规则进行解析( MM/DD/YYYY
,我想是 en-US
语言环境,但它不仅仅是一个)。老实说,我什至不会使用该代码进行解析(因为是的,实际上它会因不同的语言环境而被破坏:即使用于拆分的分隔符也不是“语言环境安全的”)。让我用一个例子来解释:
<input type="date"/>
,如果支持),您将根据您的语言环境输入日期。例如在意大利(但通常在欧洲)我们写 DD/MM/YYYY
.21 December 2014
(格式为 21/12/2014
根据他的语言环境)。1/2/2014
,代码将“认为”它是 2nd Jan
,但用户选择了 1st Feb
)。你想让它更复杂吗?连new Date(str)
可能会失败,因为它依赖于浏览器(而且您不能真正相信启发式是可移植和安全的)。如果您问自己“那他们为什么使用这样的代码?”我想说他们使用了一种快速解决方法来支持使用 en-US 区域设置的日期(可能是因为他们使用的浏览器不支持它们的启发式猜测),但这不是您应该重用的东西。 p>
解决方案?永远不要手动解析日期(除非你真的很清楚自己在做什么),为此使用一个好的库(例如 moment.js ),因为你可能对日期格式所做的大多数假设是......错了。
关于Javascript: `new Date(dateString)` 与 `new Date(year, month, day)` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865051/
我正在处理一些遗留代码,其中 java.util.Calendar 用于与日期相关的计算(基本上是添加月份)。现在我想在代码中用 java.time.LocalDate 替换 java.util.Ca
我刚刚在我正在学习的类(class)中开始使用 R,到目前为止我所做的是制作一个加载文件的脚本。 如果重要的话,我正在使用 Rstudio 1.0.44 使用 Ubuntu 14.04 运行 R。 我
我正在按月查询在 Laravel 中创建的用户,这是我的代码 $devlist = DB::table("users") ->select("id" ,DB::ra
C++20 计时类型/值之间有什么区别 month{7}和 months{7} ?有两个如此相似的名字是不是很困惑? 最佳答案 是的,同时拥有 month 可能会令人困惑。和 months第一次遇到这
我有一个数据库,其中包含我的用户完成的每个操作,并带有时间戳,如下所示: 用户名 ; Action ; 创建日期 我想评估一段时间内活跃用户的数量。我可以看到每周活跃的用户数 (count (dist
我在我的 Python 脚本中使用了 parsedatetime 库,似乎“上个月”有效,“下个月”但“本月”无效。 我错过了什么?有没有办法获取当月的第一天? 编辑:抱歉,这是一些代码: impor
我发现的大部分信息都不在 python>pandas>dataframe 中,因此是这个问题。 我想将 1 到 12 之间的整数转换为缩写的月份名称。 我有一个 df,它看起来像: client
在用户单击“下个月”或“上个月”后,我需要使用自定义 CSS 重新填充日期选择器。我正在点击 onChangeMonthYear 事件,但不知道用户要去哪条路(下个月或上个月)。有什么简单的内置东西可
我正在尝试计算一个月内产品的总销售额,但我希望它包括任何“空”月份(没有销售额)并且只选择最近的 12 个月。 到目前为止,这是我的代码。 declare @ProductNo int set @Pr
我有一个独特的问题,我根本无法解决。 所以我在 SQL Server 2005 中,我得到了以下要处理的数据: FISCAL_YEAR_START_MONTH INT(财政年度的第一个月) COUNT
我正在进行的一个项目需要获取过去 12 个月中每个月的平均发票总额。我可以通过执行 12 个查询(每月 1 个)轻松获得我需要的内容,但它非常丑陋,我最终得到 12 个唯一变量(id 而不是有一个循环
我希望用更好的不太详细的过程替换以下函数,用于从字符串确定数字月份值。有谁知道是否有可用于此目的的日期/日期时间函数?我没有注意到任何一个可以满足我的需求。 代码中的文本字符串正是我接收它们的方式。
我正在尝试获取过去 12 个月(包括当月)按月分组的记录数。不是从今年年初开始。 我有一个表 EVENTS 和一个字段 WODATE。我能做到 aFDQuery.Connection := Tra
我正在使用moment.js在 angularjs 应用程序中进行日期转换。我要打印Month number作为Month name 。我已经尝试过如下, {{item.ReviewMonth | d
我想通过 JPA 从 Oracle 数据库中选择实体,方法如下: Calendar cal = Calendar.getInstance(); cal.setTime(anOtherDate); Qu
我希望用一个更好的更简单的过程来替换以下函数,以便从字符串中确定数字月份值。有谁知道是否有可用于此的 Date/DateTime 函数?我没有注意到可以满足我的需求的。 代码中的文本字符串正是我接收它
我正在尝试获取过去 12 个月(包括当月)按月分组的记录数。不是从今年年初开始。 我有一个表 EVENTS 和一个字段 WODATE。我能做到 aFDQuery.Connection := Tra
我读到“将日期字符串转换为mysql日期时间字段”:但这对我没有帮助 所以我想做的是将dat文件读入mysql中的空表。 table CLIMBED(TRIP_ID int,PEAK VARCHAR(
我有这样的查询: SELECT EXTRACT(MONTH FROM d.mydate) AS synmonth, SUM(apcp) AS apcptot FROM t_synop_data2 d
一些需要更改 df header 的 Django 格式问题。 测试数据: Test_Data = [ ('Year_Month', ['Done_RFQ','Not_
我是一名优秀的程序员,十分优秀!