Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中检查年份是否为闰年_Javascript_Date_Conditional Statements_Date Arithmetic - Fatal编程技术网

在javascript中检查年份是否为闰年

在javascript中检查年份是否为闰年,javascript,date,conditional-statements,date-arithmetic,Javascript,Date,Conditional Statements,Date Arithmetic,这是我到目前为止所拥有的(条目位于一个from上,因此存储在“isYear”中),我基本上遵循了这一点,因此使用我已经拥有的,我如何根据这些条件检查条目是否是闰年(注意,在实现伪代码时我可能做得不对,如果有请纠正我) 编辑:注意这需要使用整数而不是日期函数您可以尝试使用JavaScript的日期对象 function leapYear(year){ var result; year = parseInt(document.getElementById("isYear").va

这是我到目前为止所拥有的(条目位于一个from上,因此存储在“isYear”中),我基本上遵循了这一点,因此使用我已经拥有的,我如何根据这些条件检查条目是否是闰年(注意,在实现伪代码时我可能做得不对,如果有请纠正我)
编辑:注意这需要使用整数而不是日期函数

您可以尝试使用JavaScript的日期对象

 function leapYear(year){
    var result; 
    year = parseInt(document.getElementById("isYear").value);
    if (years/400){
      result = true
    }
    else if(years/100){
      result = false
    }
    else if(years/4){
      result= true
    }
    else{
      result= false
    }
    return result
 }
function leapYear(year)
{
  return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}

这将返回true或false。

您可以使用以下代码检查闰年:

new Date(year,month).getFullYear()%4==0
npm install --save leap-year

如果您在Node.js应用程序中执行此操作,则可以使用以下软件包:

然后从应用程序中,使用以下代码验证提供的年份或日期对象是否为闰年:

new Date(year,month).getFullYear()%4==0
npm install --save leap-year

使用这样的库有一个优点,即您不必处理所有特殊情况的肮脏细节,因为库会处理这些细节。

我的代码很容易理解

var leapYear = require('leap-year');

leapYear(2014);
//=> false 

leapYear(2016);
//=> true 

该函数检查2月是否有29天。如果是这样的话,我们就有闰年了

ES5

ES6

结果

const isLeap = year => new Date(year, 1, 29).getDate() === 29;

Kevin p.Rice在此提供了一个更快的解决方案: 下面是代码:

isLeap(1004) // true
isLeap(1001) // false


检查@问题是我需要处理这个问题,就好像我只处理年份一样,比如说2014年是一个整数,而不是一个日期值。很高兴我能帮上忙。如果不需要函数,可以在需要的地方使用´((第%4年==0)和&(第%100年!=0))|´(第%400年==0)。不过,我发现函数有助于获得良好的人类可读代码。仅供参考:这似乎比
isLeap
(以下)的性能要好得多——这是有史以来最快的!!!可以简化为。。。它加速了一个位函数isLeap(y){return!((y%4)| |(!(y%100)和&y%400))}@fedeghe,我想我已经做了最简洁的
!(y%4)和(!(y%400)| |!!(y%100))直到我读到你的评论,但是你做了相反的逻辑并保存了两个字符!哈哈。做得很好。@fedeghe
怎么样!(y&3 | y&15&!(y%25))?详情请参阅!它不处理特殊情况(整除率为100和400)。你能详细说明一下吗?这似乎只是对公认答案的重构。它不再紧凑或执行任何不同的操作,因此我不确定它会增加多少价值。这几乎是对三元运算符的骚扰。这将是低效的,因为它总是检查一年是否可以被400整除。您得到399次
False
和一次
True
您的代码不正确。1900年不是闰年,但您的代码会说它是。它既不容易理解,也不正确。这更简洁:
!(y&3 | | y&15&&!(y%25))
实际上我最喜欢这个解决方案,因为它不需要任何关于公历的基础知识。不适用于输入
0000
0099
@inetmantom。您刚才描述的问题就像Y2kb反向,但您为这样一个简单的函数向您的项目添加了另一个依赖项。这对我来说是不可能的。拿一个包裹来检查三个师的剩余球员,坦白说是荒谬的。是吗?如果你看一看这个问题中的错误答案(人们只是简单地除以4并检查余数),对一些人来说,使用库可能是一个明智的决定。该库的优点是它包含测试用例,并且比那些提出自己错误实现的人有更好的工作机会(参见下面的几个示例)。话虽如此,我理解编写自己的快速函数(如果你做得对的话)可以避免包含一个依赖项——每个依赖项都有自己的依赖项。另一方面,所有这些都可能是多余的。下一个简单的
年份%4
不起作用的年份是2100年,今天构建的大多数软件都不会看到它。如果你喜欢的话,可以添加标签……没错,虽然有相当数量的软件需要处理2000个,但2000年也是闰年。所以除非你的软件需要处理1900,否则你是好的
isLeap(1004) // true
isLeap(1001) // false
function leapYear(year)
{
    return (year & 3) == 0 && ((year % 25) != 0 || (year & 15) == 0);
}