javascript阳历转阴历方法?

JavaScript07

javascript阳历转阴历方法?,第1张

我这里刚好有这个算法代码,请看:

var LunarDate = {  

madd: new Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334),  

HsString: '甲乙丙丁戊己庚辛壬癸',  

EbString: '子丑寅卯辰巳午未申酉戌亥',  

NumString: "一二三四五六七八九十",  

MonString: "正二三四五六七八九十冬腊",  

CalendarData: new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95),  

Year: null,  

Month: null,  

Day: null,  

TheDate: null,  

GetBit: function(m, n){  

return (m >> n) & 1  

},  

e2c: function(){  

this.TheDate = (arguments.length != 3) ? new Date(): new Date(arguments[0], arguments[1], arguments[2])  

var total, m, n, k  

var isEnd = false  

var tmp = this.TheDate.getFullYear()  

total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + this.madd[this.TheDate.getMonth()] + this.TheDate.getDate() - 38  

if (this.TheDate.getYear() % 4 == 0 && this.TheDate.getMonth() > 1) {  

total++  

}  

for (m = 0  m++) {  

k = (this.CalendarData[m] < 0xfff) ? 11: 12  

for (n = k n >= 0 n--) {  

if (total <= 29 + this.GetBit(this.CalendarData[m], n)) {  

isEnd = true  

break  

}  

total = total - 29 - this.GetBit(this.CalendarData[m], n)  

}  

if (isEnd)  

break  

}  

this.Year = 1921 + m  

this.Month = k - n + 1  

this.Day = total  

if (k == 12) {  

if (this.Month == Math.floor(this.CalendarData[m] / 0x10000) + 1) {  

this.Month = 1 - this.Month  

}  

if (this.Month > Math.floor(this.CalendarData[m] / 0x10000) + 1) {  

this.Month--  

}  

}  

},  

GetcDateString: function(){  

var tmp = ""  

tmp += this.HsString.charAt((this.Year - 4) % 10)  

tmp += this.EbString.charAt((this.Year - 4) % 12)  

tmp += "年 "  

if (this.Month < 1) {  

tmp += "(闰)"  

tmp += this.MonString.charAt(-this.Month - 1)  

} else {  

tmp += this.MonString.charAt(this.Month - 1)  

}  

tmp += "月"  

tmp += (this.Day < 11) ? "初": ((this.Day < 20) ? "十": ((this.Day < 30) ? "廿": "三十"))  

if (this.Day % 10 != 0 || this.Day == 10) {  

tmp += this.NumString.charAt((this.Day - 1) % 10)  

}  

return tmp  

},  

GetLunarDay: function(solarYear, solarMonth, solarDay) {  

if (solarYear < 1921 || solarYear > 2020) {  

return ""  

} else {  

solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1): 11  

this.e2c(solarYear, solarMonth, solarDay)  

return this.GetcDateString()  

}  

}  

}

调用代码示例:

window.onload = function(){

document.write('2014-04-01 农历'+LunarDate.GetLunarDay(2014, 4, 1))

}

结果输出:

2014-04-01 农历甲午年 三月初二

其实我也不懂这个算法,网上粘贴的,我觉得可以不去深究这个公式,反正有现成代码:

设:公元年数-1977(或1901)=4Q+R

则:阴历日期=14Q+10.6(R+1)+年内日期序数-29.5n

(注:式中Q、R、n均为自然数,R<4)

例:1994年5月7日的阴历日期为:

1994-1977=17=4×4+1

故:Q=4,R=1 则:5月7日的阴历日期为:

14×4+10.6(1+1)+(31+28+31+30+7)-29.5n

=204.2- 29.5n

然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。

JS日期格式的转换 var d = new Date()

d.setTime(1330912983320)

var year = d.getFullYear()

var month = d.getMonth()+1

var date = d.getDate()

var hour = d.getHours()

var minute = d.getMinutes()

var second = d.getSeconds()

alert(year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second)

你可以在判断下如果月日时小于10前边加个0

js日期格式化

:nowamagic./javascript/js_DateFormat.php

Aess日期格式的转换问题

1)可以写个更新查询,假设你的表名为A,原字元型的日期为日期1,新建个日期型的栏位日期2:

update A set 日期2=left(日期1,4)&"-"&mid(日期1,5,2)&"-"&right(日期1,2)

2)复制:

select left(日期1,4)&"-"&mid(日期1,5,2)&"-"&right(日期1,2)

from A

然后把这列复制到日期2

Excel日期格式的转换问题

自定义格式:yyyymmdd

js日期格式化问题

var s = "19860201"

var s1 = s.substr(0, 4) + "-" + s.substr(5, 2) + "-" + s.substr(7, 2)

alert(s1)

oracle 日期格式 格式 转换

select TO_CHAR(to_date('22-10月-13'),'yyyy-MM-dd' )from dual

[求助]excel中日期格式的转换

右键选单-设定单元格格式-数字-自定义-型别,输入mm-dd,确定

excel 转换日期格式

这个最好不用函式公式,选中整列,查询替换,将点“.”替换为斜杠“/”;设定单元格式为自定义,右侧型别输入“yyyy-mm-dd”,确定;在空白单元格输入数字1,复制——全选日期所在的列——选择性贴上——选公式——乘——确定。

这样操作应该就是你想要的了。

servlet转换日期格式

java类里面的转换方法

String newStr = new SimpleDateFormat(formatStyle).format(date)

date为日期

formatStyle为转换格式

excel VBA里 sql 转换日期格式的问题。

str = Format(Date, "YYYYMM ")

Sql = "select * from 表名 where 日期='" &str &"'"