今天是 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. 【CQOI 2007】 余数求和

    题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数.例如G(10, 5)=5 ...

  2. Window下部署MySql数据库

    官网下载地址:https://dev.mysql.com/downloads/mysql/,MySQL Community(社区版) Server 5.7.21,下载完毕后,解压文件. (1)在mys ...

  3. Android开发-API指南-<activity>

    <activity> 英文原文:http://developer.android.com/guide/topics/manifest/activity-element.html 采集(更新 ...

  4. [转]bashrc与profile区别

    作者:KornLee 2005-02-03 15:49:57 来自:Linux先生 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/pro ...

  5. 您的下个中文网站可以使用的5个高质量中文Webfont

    你有没有考虑为什么中文网站的版式风格不像大多数现代英文网站那样丰富?您想了解如何让您的下一个中文网站项目更吸引用户的眼球么?继续往下读吧…… 根据Smashing Magazine进行的一项调查显示  ...

  6. STM32F4 编程手册学习1_编程模型

    STM32F4 programming manual_1 1. 处理器模式与特权等级 处理器模式分为以下两种: 线程模式: 用来执行应用软件: 处理器从reset出来时,进入线程模式: CONTROL ...

  7. v-if或者v-repeat等不起作用

    v-if或者v-for等不起作用 在项目中,有时遇到了v-if或v-for等形式时,页面没起作用.以下可能是出现这些问题的原因: 1.绑定值是接口返回的某个属性值,而这个属性值不存在data()中,这 ...

  8. css重修之书(一):如何用css制作比1px更细的边框

    如何用css制作比1px更细的边框 在项目的开发过程中,我们常常会使用到border:1px solid xxx,来对元素添加边框: 可是1px的border看起来还是粗了一些粗,不美观,那么有什么方 ...

  9. Python3.5在Windows7环境下Scrapy库的安装

    Python3.5在Windows7环境下Scrapy库的安装 忙活了一下午,总算是把Scrapy库给装完了,记下来给需要帮助的人 首先安装的环境:Windows7 64位 Python的版本是:3. ...

  10. php中array_map和array_walk的使用对比

    一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...