今天是 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计算世界完全对称日的更多相关文章

  1. javascript计算两个时间差

    其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数. var d1 = new Date('2016/03/28 10:17:22'); var ...

  2. javascript 计算文件MD5 浏览器 javascript读取文件内容

    原则上说,浏览器是一个不安全的环境.早期浏览器的内容是静态的,用户上网冲浪,一般就是拉取网页查看.后来,随着互联网的发展,浏览器提供了非常丰富的用户交互功能.从早期的表单交互,到现在的websocke ...

  3. javascript计算字符串长度

    javascript计算字符串长度 学习了:https://blog.csdn.net/u012934325/article/details/75214847 function getByteLen( ...

  4. javascript 原型世界浅析

    一. 无中生有 起初,什么都没有. 造物主说:没有东西本身也是一种东西啊,于是就有了null: 现在我们要造点儿东西出来.但是没有原料怎么办? 有一个声音说:不是有null嘛? 另一个声音说:可是nu ...

  5. Javascript计算密码的强度

    用Javascript评估用户输入密码的强度 1.如果密码少于5位,那么就认为这是一个弱密码.2.如果密码只由数字.小写字母.大写字母或其它特殊符号当中的一种组成,则认为这是一个弱密码.3.如果密码由 ...

  6. javascript 计算两个日期的差值

    代码 Typescript版 /** * TimeSpan just like the class TimpSpan in C# ,represent the time difference * @c ...

  7. 利用JavaScript计算引擎进行字符串公式运算

    1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...

  8. 大神是怎样用函数式JavaScript计算数组平均值的

    译者按: 有时候一个算法的直观.简洁.高效是需要作出取舍的. 原文: FUNCTIONAL JAVASCRIPT: FIVE WAYS TO CALCULATE AN AVERAGE WITH ARR ...

  9. javaScript 计算两个日期的天数相差

    一:计算两个日期相差的天数 1 <html> <head> <meta http-equiv="Content-Type" content=" ...

随机推荐

  1. Java开发工程师(Web方向) - 02.Servlet技术 - 第2章.Cookie与Session

    第2章--Cookie与Session Cookie与Session 浏览器输入地址--HTTP请求--Servlet--HTTP响应--浏览器接收 会话(session):打开浏览器,打开一系列页面 ...

  2. 【movable-area、movable-view】 可移动区域组件说明

    movable-area.movable-view 可移动区域组件 原型: <movable-area scale-area="[Boolean]"> <mova ...

  3. Python全栈 项目(电子词典、协程、pdb调试)

    后面我就不截图了 大家还是看原文吧                          https://yq.aliyun.com/articles/629534 . ................. ...

  4. vuex-Actions的用法

    Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态. Action 是异步的,mutation是同步的. 沿用vuex学习---简介的案例 ...

  5. 周期串 (Periodic Strings,UVa455)

    #include<stdio.h> #include<string.h> int main(void) { int n,stlen,i,j; ]; while(scanf(&q ...

  6. block inline 和 inline-block

    概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素). block元素通常 ...

  7. 通过Ajax上传文件至WebApi服务器

    https://stackoverflow.com/questions/43013858/ajax-post-a-file-from-a-form-with-axios var formData = ...

  8. Django基本目录详解

    1.app是自己建立的一个存放app的文件夹,因为项目大了之后会存在很多app(pycharm生成app方法 Tools-Run manage.py Task-输入startapp app名称) 2. ...

  9. 第三章 持续集成jenkins工具使用之邮件配置

    1   Email Extension Plugin插件安装 持续集成很重要的一环就是及时将构建结果通知到对应的责任人,如:构建失败了,至少需要下发通知给造成本次构建失败的开发人员,如果包含自动化测试 ...

  10. MONyog-数据库性能监控工具

    一.安装步骤 较为简单,网上可以搜索到,此处不做详细说明. 二.使用图解 此处介绍监控数据库连接量.并发量.吞吐量.响应时间等功能 1.设置连接需要监控的数据库 打开:http://127.0.0.1 ...