Javascript计算世界完全对称日
今天是 2011-11-02 日,微博啊、G+啊什么的都传是世界完全对称日,还说是多少年一遇的。下面写个 JavaScript 小程序,看看是否真的N年一遇。计算范围在公元2000年到3000年。
名词解说:世界完全对称日,指的是公历纪年日期中数字左右完全对称的日期,这一天朋友们可以互送祝福同时让大家感叹时间的宝贵。
JavaScript 代码:
<input type="button" value=" 计算世界完全对称日 " id="compute" />
<div id="result"></div> <script>
/**
* 将日期变为标准8位格式,如20111102
* 将其分为四段 分别为 20 11 11 02 为世纪,年,月,日
* 按年算法时间复杂度为O(n3),而从后四位,月日即可得到最后的结果,效率更高
* 因为闰年2月尾数为9,超过人类漫长的历史,所以无须考虑
*/
;;(function(){
var theDateList=[];
//出现回文日的世纪最大值
var maxForCentury=30;
//出现回文日的世纪最小值
var minForCentury=20;
//可能出现回文日的年数最大值,这里只粗糙处理
var maxForYear=21;
var maxForDay=31;//不排除闰年
for(var i=1;i<=12;i++){
var stdYear,stdDay;
var stdMonth=getStandardDate(i);
/*
if(getReverseDate(stdMonth)>maxForDay){
continue;
}
*/
maxForDay=getDate(i);
for(var k=1;k<maxForDay;k++){
stdDay =getStandardDate(k);
stdYear=getReverseDate(stdMonth+stdDay);
if(parseInt(getReverseDate(stdDay),10)>=minForCentury
&& parseInt(getReverseDate(stdDay),10)<maxForCentury)
theDateList.push(stdYear+stdMonth+stdDay)
} }
theDateList.sort(); //排序
var result = document.getElementById("result");
var str = "";
var btn = document.getElementById("compute");
btn.onclick = function(){
for(var i=0;i<theDateList.length;i++){
console.log(theDateList[i]);
str += theDateList[i] + "<br />";
result.innerHTML = str;
}
} //console.log('共有%d条记录',theDateList.length)
/**
* 根据月份算当前月天数
* @param {int} val 月份
* @return {int}
*/
function getDate(val){
return val%2==0?30:31;
}
/**
* 将小于10的日期值换成标准8位日期值
* @param {int} val 月份或日期
* @return {string} 标准格式
*/
function getStandardDate(val){
if(val<10){
return '0'+val;
}
return val.toString();
}
/**
* 反转日期
* @param {string} date 月份或日期的标准格式
* @return {string} 反转后的标准格式
*/
function getReverseDate(date){
return date.split("").reverse().join("");
}
})();
</script>
Javascript计算世界完全对称日的更多相关文章
- javascript计算两个时间差
其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数. var d1 = new Date('2016/03/28 10:17:22'); var ...
- javascript 计算文件MD5 浏览器 javascript读取文件内容
原则上说,浏览器是一个不安全的环境.早期浏览器的内容是静态的,用户上网冲浪,一般就是拉取网页查看.后来,随着互联网的发展,浏览器提供了非常丰富的用户交互功能.从早期的表单交互,到现在的websocke ...
- javascript计算字符串长度
javascript计算字符串长度 学习了:https://blog.csdn.net/u012934325/article/details/75214847 function getByteLen( ...
- javascript 原型世界浅析
一. 无中生有 起初,什么都没有. 造物主说:没有东西本身也是一种东西啊,于是就有了null: 现在我们要造点儿东西出来.但是没有原料怎么办? 有一个声音说:不是有null嘛? 另一个声音说:可是nu ...
- Javascript计算密码的强度
用Javascript评估用户输入密码的强度 1.如果密码少于5位,那么就认为这是一个弱密码.2.如果密码只由数字.小写字母.大写字母或其它特殊符号当中的一种组成,则认为这是一个弱密码.3.如果密码由 ...
- javascript 计算两个日期的差值
代码 Typescript版 /** * TimeSpan just like the class TimpSpan in C# ,represent the time difference * @c ...
- 利用JavaScript计算引擎进行字符串公式运算
1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...
- 大神是怎样用函数式JavaScript计算数组平均值的
译者按: 有时候一个算法的直观.简洁.高效是需要作出取舍的. 原文: FUNCTIONAL JAVASCRIPT: FIVE WAYS TO CALCULATE AN AVERAGE WITH ARR ...
- javaScript 计算两个日期的天数相差
一:计算两个日期相差的天数 1 <html> <head> <meta http-equiv="Content-Type" content=" ...
随机推荐
- jmeter3.0 java请求
1.java请求说明 需要压测某些java方法或一些请求需要通过编写代码实现 1.1.依赖jar包: jmeter下/lib/ext中的ApacheJMeter_java.jar(必须).Apache ...
- 在deepin系统中制作桌面快捷方式
在使用deepin-wine 安装一些软件的时候,每次启动都需要到.deepinwine目录下运行deepin-wine xx.exe.笔者在安装过HeidiSql之后,一直苦于这种情况.比较好的解决 ...
- 垃圾收集器与内存分配策略(深入理解Java虚拟机)
3.1 概述 垃圾收集器要解决哪些问题? 哪些内存需要回收 什么时候回收 如何回收 引用计数算法:当有一个地方引用,+1,引用失效,-1. 缺点:对象之间相互循环引用的问题. 可达性分析算法: ...
- 376. Binary Tree Path Sum【LintCode java】
Description Given a binary tree, find all paths that sum of the nodes in the path equals to a given ...
- 【MFC】VS2017新建完MFC后,没有界面,只有代码
问题描述:双击.rc文件后提示在另一个编辑器中打开 解决方法整合: 1----- 打开工程之前先把.rc文件改个名称,然后打开工程双击解决方案管理器的.rc文件, 会显示"载入失败" ...
- Exact Inference in Graphical Models
独立(Independence) 统计独立(Statistical Independence) 两个随机变量X,Y统计独立的条件是当且仅当其联合概率分布等于边际概率分布之积: \[ X \perp Y ...
- Dev c++ 调试步骤
不能调试的时候,修改下列地方: 1.在“工具”->编译选项->”Add following commands when calling complier”下面的编辑框里写入:-g3 2.在 ...
- Nodejs基础之redis
安装redis 模块 npm install redis 1 代码部分 const redis = require('redis') const client = redis.createClient ...
- Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点
Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点 一.安装docker 执行代码如下: curl -sSL https://get.daocloud.io ...
- poj 3009 (深搜求最短路)
题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作.用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写. 写的第一次 ...