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=" ...
随机推荐
- tpo-09 C1 Advice on a term paper's topic
第 1 段 1.Listen to a conversation between a student and her professor. 请听一段一名学生和教授讨论的对话. 第 2 段 1.Befo ...
- 如何搭建本地svn服务器和搭建本地Git服务器
搭建git本地服务器使用的软件有很多,例如:gitlab,gitblit,gitbucket,gogs,gitolite,具体比较:http://softlab.sdut.edu.cn/blog/su ...
- yii的学习笔记 基本结构 自用
Yii 学习笔记 W:YII是什么? Q:Yii 是一个基于组件的高性能 PHP 框架,用于快速开发大型 Web 应用.它使Web开发中的 可复用度最大化,可以显著提高你的Web应用开发速度.Yii ...
- leetcode-反转链表
转载至:https://blog.csdn.net/fx677588/article/details/72357389 反转一个单链表. 示例: 输入: 1->2->3->4 ...
- * 197. Permutation Index【LintCode by java】
Description Given a permutation which contains no repeated number, find its index in all the permuta ...
- LinQ to SQL 及 non-LinQ方式实现Group的Performance对比
拥有476550数据的一张数据表.使用其中的某个字段分组,然后按该字段进行排序.该需求分别使用LinQ to SQL和non-LinQ的方式实现,然后来看一下performance对比. LinQ w ...
- POJ 3028 Shoot-out(概率DP)
Description This is back in the Wild West where everybody is fighting everybody. In particular, ther ...
- Redis+Keepalived高可用方案详细分析
背景 目前,Redis集群的官方方案还处在开发测试中,未集成到稳定版中.且目前官方开发中的Redis Cluster提供的功能尚不完善(可参考官方网站或http://www.redisdoc.com/ ...
- 《剑指Offer》题五十一~题六十
五十一.数组中的逆序对 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数.例如,在数组{7, 5, 6, 4}中,一共存 ...
- 11.24Daily Scrum(3)
人员 任务分配完成情况 明天任务分配 王皓南 实现网页上视频浏览的功能.研究相关的代码和功能.1002 数据库测试 申开亮 实现网页上视频浏览的功能.研究相关的代码和功能.1003 实现视频浏览的功能 ...