JS实现农历(含干支纪年)算法

九月 29th, 2011

JS写了一个农历以天干地支的类。

类:lunarDate 右健另存为
方法:

lunarDate(d:Date) 构造函数
参数:d:Date为日期对象,可选。默认是当前时间。

toLunarDate(d:Date):Object 方法
说明:将传入日转化成农历日期。
参数:d:Date为日期对象,为空时,取lunarDate创建时的日期。
返回:Object对象 {”y”:lunarYear,”m”:lunarMonth,”d”:lunarDay,”leap”:leap,”isleep”:_isLeap,”toString”:function()}

y:Number 农历年。
m:Number 农历月。
d:Number 农历日期。
leap:Number 当前日期所有年闰几月。
isLeap:Boolea 当前月是否是闰月。
toString:function() 返回中文字符串表达。

toSolar(y:Number,m:Number,d:Number):Date 方法
说明:将农历日期转化成公历日期。
参数:
y:Number 公历年。
m:Number 公历月。
d:Number 公历日。
返回:Date,返回一个Date对象。

ganzhi(d:Date):Object 方法
说明:将传入日期对象转化成干支表达对象。
参数:d:Date为日期对象,为空时,取lunarDate创建时的日期。
返回:Object对象。 {”y”:y,”m”:m,”d”:d,”h”:h,”jie”:jieqi,”animal”:animal,”toString”:funtion(t)};

y:Number 干支纪年。0-59
m:Number 干支纪月。0-59
d:Number 干支纪日。0-59
h:Number 干支纪时。0-59
jie:String 如果当是节气,则返当前节气,否则为空。
animal:String 当前年的生肖。
toString:function(t) 返回中文字符串表达。

关于农历一些概念:
1.农历不是阴历,而是阴阳合历。
2.农历有大小月之分,大月30天,小月29天。根据朔望月定初一,大小月交替。
3.农历有闰月之说,也就是一年有13个月。一般可以理解为19年有7个闰月,或是有种说法:三年两头闰。

天干地支纪年:
1.始于汉代
2.年以立春作为分界线。与农历相关不大。
3.在个人生辰中初为年柱。

天干地支纪月:
1.现有两种方式,一种以农历月为准,别一种是以二十四节气为准。
2.多种算命先生,生辰八字中称为月柱。
3.参考干支纪月,以农历月为准的不太靠谱。

天干地支纪日:
1.第一天是什么时候已不可考了。
2.干支是六十一轮回。确定每一天为参考即可按日期直接换算。
3.中国的时辰是23:00开始,所以要以23:00为界线。
4.在生辰八字称为日柱

天干地支纪时:
1.干支纪时按可根据干支日的直接换算。日和时的对应关系和年跟月的对应关系是一致的。

生辰八字:
1.将你出生日期和时间转化成天干地支表达方式就是生辰八字。

相关资料:
台湾中央研院计算中心两千年中西历换算
维基百科-农历
维基百科-天干地支

js与flash交互

二月 6th, 2010

在html页面里js调用swf里的方法,以及swf调用js函数。
在as中:

ExternalInterface.call("js函数名“,参数1,参数2,....);//flash调用js
ExternalInterface.addCallback("js函数名", as对应方法);//添加js对应的回调函数。

在html中:
关健是要先获取dom里的flash节点对象.假定为swfobj,
js调用方法为:swfobj.方法名(参数1,参数2);
例如:
as中:

ExternalInterface.addCallback("play", jsplay)
function jsplay(a,b,c){
//do someting
}

则js中可为:
swfobj.play(”a”,”b”,”c”);
js调用时需要对object,embed中的AllowScriptAccess做设定,默认值是: sameDomain,如果跨域的需要设为always,还要对其as中的Security.allowDomain进行设定,图方便可直接设为 Security.allowDomain(*);

补充一个比较杯具的问题:
除纯正的IE之外所有IE内核的浏览器,例如:傲游,TT,世界之窗等等,在js调用flash时会出现安全沙箱的问题。貌似是AllowScriptAccess无效了,其真正原因是因为这些外壳浏览器的缓存机制的问题。比较恶心的作法是针对IE内核的浏览器在引用swf文件时,在其URL地后增加一个随机变量。通过动态改变URL方式清除缓存。本来还以为是这些浏览器有问题,后来细想一下,还是adobe的问题。

jquery+swfobject代码:

var r=$.browser.msie?"?"+Math.random():"";
swfobject.embedSWF("main.swf"+r, "slides", "500", "260", "9.0.0","",
{}, {"AllowScriptAccess":"always"}, {"id":"flash_map","name":"flash_map"});

yui2.8在Dreamweaver的代码提示

二月 4th, 2010

前段整了dreamweaver下如何自定义代码提示,经过一小段时间的整理。现在奉上一个YUI 2.8在dreamweaver cs4 下的代码提示。

下载yui 2.8提代提示文件(右健另存为

将该xml文件下载,放置到 Dreamweaver CS4安装目录\configuration\CodeHints下。
例如:C:\Program Files\Adobe\Adobe Dreamweaver CS4\configuration\CodeHints
重启Dreamweaver CS4。

QQ五笔的小动作!

二月 2nd, 2010

一直没有好用的五笔,用了一段自定议的google五笔,只要碰到编码里有a的输入总觉的怪怪的。闲来无事装了QQ五笔,感觉还好。
又刚好前天无意间去输出了浏览器的navigator.userAgent值,发现QQ五笔把自已的信息加到了浏览器的navigator.userAgent里面,不管腾讯是何目的,总觉如此做法去收集用户的信息,实在感觉不爽。
在这个页也可以判读,是不是感觉很不爽!
如果你不想让腾讯知道你是否装了QQ五笔,那就是去除QQ五笔在IE浏览器下navigator.userAgent值,运行regedit,删除注册表下的键值。路径如下:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform

把QQWubi 108 删除,或是改名。

红色文字判断js代码!

if(navigator.userAgent.indexOf("QQWubi")>-1){
		document.write("你装了QQ五笔");
	}else{
		document.write("你没装QQ五笔");
	}

不知道QQ拼音输入法是否也有这样的手脚,有用QQ拼音的同学可以试试。

swfobject判断浏览器是否安装或是启用flash

十一月 29th, 2009

先看swfobject2.2的源代码:
http://code.google.com/p/swfobject/source/browse/tags/swfobject_2_2/src/swfobject.js?r=385
回调函数处理:

var myswf=swfobject.embedSWF("swf url","dom id","width","height","9.0.0","",flashvarobj,attributes,f,function(e){
 if(!e.success){//不成功}
})

直接调用swfobject的参数

if(swfobject.ua.pv[0]){ //pv是一个版本号的对象
  //可以
}else{
  //不成功
}

但是会有一种特殊情况:就是在IE浏览器安全区域设置有一项(对标记为可安全执行脚本的ActiveX控件初始化并执行脚本)当该项设为(启动)时。就算是浏览器已经禁用了flash插件,swfobject.ua.pv[0]还是能得到flash的版本号。所以这种情况下用让判断失效。

自定义 Dreamweaver CS4 代码提示

十月 24th, 2009

Dreamweaver CS4的代码提功能比cS3要好很多,但是现在WEB开发过程中一般都会用到一些JS框架。如何对这些框架提供的方法,或是属性增加代码提示,对于用dreamweaver作为开发工作的人来说显得很重要。经过几翻周折,大至理清了dreamweaver在代码提示的原理。

Dreamweaver CS4是通过加载其安装目录下的configuration\CodeHints的XML文件实现代码提示。 阅读全文 »

FLASH Loader 的 bug?

十月 19th, 2009

手头有一个小的flash程序,一个图片的加载器。而开发阶段,Loader去加载一张2562*1602的图片,又把loader缩小到50*50的宽度.再把loader定位到stage的右下角。
好!问题来了,当是stage的长宽变大时,Loader内的图片x,y坐标会有一个限值。当图片越大,该loader内的图片的限值x,y坐标越小。

阅读全文 »

离开深圳

八月 2nd, 2009

深圳近四年,离开了,惆怅ing.
兄弟姐妹们,我会想你们的,我会回来看你们的。

JS滚动条

七月 2nd, 2009

花了几天时间用js实现模拟滚动条,支持圆角

兼容性: IE6/7/8/ 通过测试
Firefox3/Opera10/ 非文本输入不支持鼠标滚动
Chrome2/Safari4/ 不支持鼠标滚动
文件下载:dscroll.js (右健另存为)   实例 阅读全文 »

as闭包,addEventListener传参数.

六月 18th, 2009

闭包,很强大。as通用闭包方法给addEventListener传参数。

var arg=0;
a.addEventListener(MouseEvent.CLICK,clickfunc(arg));
function clickfunc(arg):Function{
var func=function(e):void{
trace(arg);
trace(e);
}
return func;
}