如果我有一个月的2月,我怎样才能让下面的代码工作?目前它已经到了那天,然后在到达if之前停下来确定它是否是闰年.
if (month == 2) {
if (day == 29) {
if (year % 4 != 0 || year % 100 == 0 && year % 400 != 0) {
field.focus();
field.value = month +'/' + '';
}
}
else if (day > 28) {
field.focus();
field.value = month +'/' + '';
}
}
Run Code Online (Sandbox Code Playgroud) JSPerf上的某个人为了检查ISO日历的闰年而放弃了一个非常快的实现(链接:奇数位操作):
function isLeapYear(year) {
return !(year & 3 || year & 15 && !(year % 25));
}
Run Code Online (Sandbox Code Playgroud)
使用Node.js,我快速检查了它与我知道的另外两个单线程实现.
function isLeapClassic(y) { return (y % 4 == 0) && !(y % 100 == 0) || (y % 400 == 0); }
function isLeapXOR(y) { return (y % 4 == 0) ^ (y % 100 == 0) ^ (y % 400 == 0); }
function isLeapBitwise(y) { return !(y & 3 || y & 15 && !(y % 25)); } …Run Code Online (Sandbox Code Playgroud) 我使用C制作了一个程序来查找输入的年份是否是闰年.但遗憾的是它运作不佳.它说一年是飞跃,前一年不是飞跃.
#include<stdio.h>
#include<conio.h>
int yearr(int year);
void main(void)
{
int year;
printf("Enter a year:");
scanf("%d",&year);
if(!yearr(year))
{
printf("It is a leap year.");
}
else
{
printf("It is not a leap year");
}
getch();
}
int yearr(int year)
{
if((year%4==0)&&(year/4!=0))
return 1;
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
阅读评论后,我编辑了我的编码:
#include<stdio.h>
#include<conio.h>
int yearr(int year);
void main(void)
{
int year;
printf("Enter a year:");
scanf("%d",&year);
if(!yearr(year))
{
printf("It is a leap year.");
}
else
{
printf("It is not a leap year");
}
getch();
}
int …Run Code Online (Sandbox Code Playgroud) 假设我们收到了一组用户,每个用户都以BSON类型的日期格式生日.
我们如何运行查询以查找在接下来的30天内过生日的所有用户?
我有2个字段输入和输出日期.在某些情况下,我将endDate设置为比开始日期提前1年.
<input type='date' id='endDate'>
Run Code Online (Sandbox Code Playgroud)
$("#startDate").change(function(){
var endDate = new Date($("#startDate").val());
endDate.setMonth(endDate.getMonth() + 1);
endDate.setFullYear(endDate.getFullYear() + 1);
var myDay = ("0" + endDate.getDate()).slice(-2);
var myMonth = ("0" + endDate.getMonth()).slice(-2);
$("#endDate").val(endDate.getFullYear() + '-' + myMonth + '-' + myDay);
}
Run Code Online (Sandbox Code Playgroud)
我将开始日期设置为2-29-2016时的问题我收到以下错误:
指定值"2017-02-29"不符合所需格式"yyyy-MM-dd".
我希望Date()函数能够处理它.显然,他们没有.这是一个错误吗?
他们的反应是否比添加一堆if语句更快?
检查有效DateTime的最快方法是什么? 我不仅需要考虑字符串中的年份,月份,日期,小时和分钟,还要考虑日期时间是否有效,例如:2017-02-29 10:00应被视为无效,因为它是第29位一个非闰年.
我有一个字符串元素数组(300k元素)格式:YYYYMMDDHHmm,我需要以最快的方式检查每一行.
使用moment.js来检查每个元素的有效性需要5s在常规的for循环中:
for (let i = 0; i < length; i++) {
let el = datetimes[i];
let d = moment.utc(el, "YYYYMMDDHHmm");
d.isValid();
}
Run Code Online (Sandbox Code Playgroud)
有更快的替代品吗?
我想确定一年是否是闰年.我不确定我在哪里遗漏了一些东西,因为这段代码是为了确定这一点.
谢谢你的帮助.
let Year = (year) => {
this.year = year;
};
Year.prototype.isLeap = () => {
return (
this.year % 400 === 0 ||
(this.year % 4 === 0 && (this.year % 100 === 0))
);
};
let year = new Year(2014);
year.isLeap();
Run Code Online (Sandbox Code Playgroud)
谢谢,我已经弄清楚了.
最初我做的就是那些你们指向这里的If语句!所以我现在正在重构一个更干净的代码.
我的代码在这一行上有问题
(this.year % 4 === 0 && (this.year % 100 === 0))
Run Code Online (Sandbox Code Playgroud)
正确的语法是
(this.year % 4 === 0 && !(this.year % 100 === 0))
Run Code Online (Sandbox Code Playgroud)