有没有农历转公历的类? 求农历转公历的类,或公历转农历的?谢谢. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基于组件的C#农历算法http://www.csdn.com.cn/program/7132.htm 用C#开发带农历的日历http://cn.ija.cn/info/9494.htm http://www.chinaaspx.com/article/csharp/296.htm 下面是一个关于农历的算法注意:输入日期的格式,例如: 2004-12-27 '日期数据定义方法如下 '前12个字节代表1-12月为大月或是小月,1为大月30天,0为小月29天; '第13位为闰月的情况,1为大月30天,0为小月29天; '第14位为闰月的月份,如果不是闰月为0,否则给出月份,10、11、12分别用A、B、C来表示,即使用16进制; '最后4位为当年家农历新年-即农历1月1日所在公历的日期,如0131代表1月31日。 ' ChgType: True 阴历=>阳历 ; False 阳历=>阴历 Function GetChgDate(ByVal vDate As String, ByVal ChgType As Boolean) As String Dim vvdate() As String = Split(vDate, "-") If vvdate(0) > 2011 Or vvdate(0) < 1900 Then Throw New NotSupportedException("本函数只提供1900年至2011年的日历转换!") End If Dim AddMonth, AddDay, AddYear, getDay, i As Integer Dim RunYue As Boolean Dim conDate As DateTime Dim daList(2011) As String daList(1900) = "010010110110180131" daList(1901) = "010010101110000219" daList(1902) = "101001010111000208" daList(1903) = "010100100110150129" daList(1904) = "110100100110000216" daList(1905) = "110110010101000204" daList(1906) = "011010101010140125" daList(1907) = "010101101010000213" daList(1908) = "100110101101000202" daList(1909) = "010010101110120122" daList(1910) = "010010101110000210" daList(1911) = "101001001101160130" daList(1912) = "101001001101000218" daList(1913) = "110100100101000206" daList(1914) = "110101010100150126" daList(1915) = "101101010101000214" daList(1916) = "010101101010000204" daList(1917) = "100101101101020123" daList(1918) = "100101011011000211" daList(1919) = "010010011011170201" daList(1920) = "010010011011000220" daList(1921) = "101001001011000208" daList(1922) = "101100100101150128" daList(1923) = "011010100101000216" daList(1924) = "011011010100000205" daList(1925) = "101011011010140124" daList(1926) = "001010110110000213" daList(1927) = "100101010111000202" daList(1928) = "010010010111120123" daList(1929) = "010010010111000210" daList(1930) = "011001001011060130" daList(1931) = "110101001010000217" daList(1932) = "111010100101000206" daList(1933) = "011011010100150126" daList(1934) = "010110101101000214" daList(1935) = "001010110110000204" daList(1936) = "100100110111030124" daList(1937) = "100100101110000211" daList(1938) = "110010010110170131" daList(1939) = "110010010101000219" daList(1940) = "110101001010000208" daList(1941) = "110110100101060127" daList(1942) = "101101010101000215" daList(1943) = "010101101010000205" daList(1944) = "101010101101140125" daList(1945) = "001001011101000213" daList(1946) = "100100101101000202" daList(1947) = "110010010101120122" daList(1948) = "101010010101000210" daList(1949) = "101101001010170129" daList(1950) = "011011001010000217" daList(1951) = "101101010101000206" daList(1952) = "010101011010150127" daList(1953) = "010011011010000214" daList(1954) = "101001011011000203" daList(1955) = "010100101011130124" daList(1956) = "010100101011000212" daList(1957) = "101010010101080131" daList(1958) = "111010010101000218" daList(1959) = "011010101010000208" daList(1960) = "101011010101060128" daList(1961) = "101010110101000215" daList(1962) = "010010110110000205" daList(1963) = "101001010111040125" daList(1964) = "101001010111000213" daList(1965) = "010100100110000202" daList(1966) = "111010010011030121" daList(1967) = "110110010101000209" daList(1968) = "010110101010170130" daList(1969) = "010101101010000217" daList(1970) = "100101101101000206" daList(1971) = "010010101110150127" daList(1972) = "010010101101000215" daList(1973) = "101001001101000203" daList(1974) = "110100100110140123" daList(1975) = "110100100101000211" daList(1976) = "110101010010180131" daList(1977) = "101101010100000218" daList(1978) = "101101101010000207" daList(1979) = "100101101101060128" daList(1980) = "100101011011000216" daList(1981) = "010010011011000205" daList(1982) = "101001001011140125" daList(1983) = "101001001011000213" daList(1984) = "1011001001011A0202" daList(1985) = "011010100101000220" daList(1986) = "011011010100000209" daList(1987) = "101011011010060129" daList(1988) = "101010110110000217" daList(1989) = "100100110111000206" daList(1990) = "010010010111150127" daList(1991) = "010010010111000215" daList(1992) = "011001001011000204" daList(1993) = "011010100101030123" daList(1994) = "111010100101000210" daList(1995) = "011010110010180131" daList(1996) = "010110101100000219" daList(1997) = "101010110110000207" daList(1998) = "100100110110150128" daList(1999) = "100100101110000216" daList(2000) = "110010010110000205" daList(2001) = "110101001010140124" daList(2002) = "110101001010000212" daList(2003) = "110110100101000201" daList(2004) = "010110101010120122" daList(2005) = "010101101010000209" daList(2006) = "101010101101170129" daList(2007) = "001001011101000218" daList(2008) = "100100101101000207" daList(2009) = "110010010101150126" daList(2010) = "101010010101000214" daList(2011) = "101101001010000214" AddYear = vvdate(0) If ChgType = True Then 'True 阴历=>阳历 AddMonth = Val(Mid(daList(AddYear), 15, 2)) AddDay = Val(Mid(daList(AddYear), 17, 2)) conDate = DateSerial(AddYear, AddMonth, AddDay) AddDay = vvdate(2) For i = 1 To vvdate(1) - 1 AddDay = AddDay + 29 + Val(Mid(daList(vvdate(0)), i, 1)) Next i Return DateAdd(DateInterval.Day, AddDay - 1, conDate) Else 'False 阳历=>阴历CHUSHIHUA: AddMonth = Val(Mid(daList(AddYear), 15, 2)) AddDay = Val(Mid(daList(AddYear), 17, 2)) conDate = DateSerial(AddYear, AddMonth, AddDay) Dim vtDate As DateTime Try vtDate = CType(vDate, DateTime) Catch ex As Exception Throw New NotSupportedException("阳历日期输入错误!") End Try getDay = DateDiff(DateInterval.Day, conDate, vtDate) If getDay < 0 Then AddYear = AddYear - 1 : GoTo CHUSHIHUA AddDay = 1 AddMonth = 1 For i = 1 To getDay AddDay = AddDay + 1 If AddDay = 30 + Mid(daList(AddYear), AddMonth, 1) Or (RunYue And AddDay = 30 + Mid(daList(AddYear), 13, 1)) Then If RunYue = False And AddMonth = Val("&H" & Mid(daList(AddYear), 14, 1)) Then RunYue = True Else RunYue = False AddMonth = AddMonth + 1 End If AddDay = 1 End If Next Return AddYear & "-" & AddMonth & "-" & AddDay End If End Function调用方法: TextBox2.Text = GetChgDate(Trim(TextBox1.Text), True) 'True 阴历=>阳历 TextBox2.Text = GetChgDate(Trim(TextBox1.Text), False) 'False 阳历=>阴历 C#窗体程序字体变大,为二号时,文字出现矩齿,怎样消除矩齿?或者有什么更好的方法替代label,只要能显示的文字没矩齿就行。 数据定时同步思路 谁进来介绍一些 正则好点的书 Like模糊查询问题 更改timer的Interval属性的问题(有代码) jquery 二级联动后,如何实现点击其他按钮 联动项选择的值刷新呢? C# 水晶报表哪里有好的例子参考? C# 请教 怎样在Page_Load中读取数据? 对于数字格式的处理用什么方法? 我的类中控件为什么不认啊? 求解答!解决后马上给分(急急急急急急急急急急急急急急急急急急急急急急急急) 请教:为什么这段代码总是显示"无法写入注册表".
http://www.csdn.com.cn/program/7132.htm
http://cn.ija.cn/info/9494.htm
注意:输入日期的格式,例如: 2004-12-27
'日期数据定义方法如下
'前12个字节代表1-12月为大月或是小月,1为大月30天,0为小月29天;
'第13位为闰月的情况,1为大月30天,0为小月29天;
'第14位为闰月的月份,如果不是闰月为0,否则给出月份,10、11、12分别用A、B、C来表示,即使用16进制;
'最后4位为当年家农历新年-即农历1月1日所在公历的日期,如0131代表1月31日。
' ChgType: True 阴历=>阳历 ; False 阳历=>阴历 Function GetChgDate(ByVal vDate As String, ByVal ChgType As Boolean) As String
Dim vvdate() As String = Split(vDate, "-")
If vvdate(0) > 2011 Or vvdate(0) < 1900 Then
Throw New NotSupportedException("本函数只提供1900年至2011年的日历转换!")
End If Dim AddMonth, AddDay, AddYear, getDay, i As Integer
Dim RunYue As Boolean
Dim conDate As DateTime
Dim daList(2011) As String daList(1900) = "010010110110180131"
daList(1901) = "010010101110000219"
daList(1902) = "101001010111000208"
daList(1903) = "010100100110150129"
daList(1904) = "110100100110000216"
daList(1905) = "110110010101000204"
daList(1906) = "011010101010140125"
daList(1907) = "010101101010000213"
daList(1908) = "100110101101000202"
daList(1909) = "010010101110120122"
daList(1910) = "010010101110000210"
daList(1911) = "101001001101160130"
daList(1912) = "101001001101000218"
daList(1913) = "110100100101000206"
daList(1914) = "110101010100150126"
daList(1915) = "101101010101000214"
daList(1916) = "010101101010000204"
daList(1917) = "100101101101020123"
daList(1918) = "100101011011000211"
daList(1919) = "010010011011170201"
daList(1920) = "010010011011000220"
daList(1921) = "101001001011000208"
daList(1922) = "101100100101150128"
daList(1923) = "011010100101000216"
daList(1924) = "011011010100000205"
daList(1925) = "101011011010140124"
daList(1926) = "001010110110000213"
daList(1927) = "100101010111000202"
daList(1928) = "010010010111120123"
daList(1929) = "010010010111000210"
daList(1930) = "011001001011060130"
daList(1931) = "110101001010000217"
daList(1932) = "111010100101000206"
daList(1933) = "011011010100150126"
daList(1934) = "010110101101000214"
daList(1935) = "001010110110000204"
daList(1936) = "100100110111030124"
daList(1937) = "100100101110000211"
daList(1938) = "110010010110170131"
daList(1939) = "110010010101000219"
daList(1940) = "110101001010000208"
daList(1941) = "110110100101060127"
daList(1942) = "101101010101000215"
daList(1943) = "010101101010000205"
daList(1944) = "101010101101140125"
daList(1945) = "001001011101000213"
daList(1946) = "100100101101000202"
daList(1947) = "110010010101120122"
daList(1948) = "101010010101000210"
daList(1949) = "101101001010170129"
daList(1950) = "011011001010000217"
daList(1951) = "101101010101000206"
daList(1952) = "010101011010150127"
daList(1953) = "010011011010000214"
daList(1954) = "101001011011000203"
daList(1955) = "010100101011130124"
daList(1956) = "010100101011000212"
daList(1957) = "101010010101080131"
daList(1958) = "111010010101000218"
daList(1959) = "011010101010000208"
daList(1960) = "101011010101060128"
daList(1961) = "101010110101000215"
daList(1962) = "010010110110000205"
daList(1963) = "101001010111040125"
daList(1964) = "101001010111000213"
daList(1965) = "010100100110000202"
daList(1966) = "111010010011030121"
daList(1967) = "110110010101000209"
daList(1968) = "010110101010170130"
daList(1969) = "010101101010000217"
daList(1970) = "100101101101000206"
daList(1971) = "010010101110150127"
daList(1972) = "010010101101000215"
daList(1973) = "101001001101000203"
daList(1974) = "110100100110140123"
daList(1975) = "110100100101000211"
daList(1976) = "110101010010180131"
daList(1977) = "101101010100000218"
daList(1978) = "101101101010000207"
daList(1979) = "100101101101060128"
daList(1980) = "100101011011000216"
daList(1981) = "010010011011000205"
daList(1982) = "101001001011140125"
daList(1983) = "101001001011000213"
daList(1984) = "1011001001011A0202"
daList(1985) = "011010100101000220"
daList(1986) = "011011010100000209"
daList(1987) = "101011011010060129"
daList(1988) = "101010110110000217"
daList(1989) = "100100110111000206"
daList(1990) = "010010010111150127"
daList(1991) = "010010010111000215"
daList(1992) = "011001001011000204"
daList(1993) = "011010100101030123"
daList(1994) = "111010100101000210"
daList(1995) = "011010110010180131"
daList(1996) = "010110101100000219"
daList(1997) = "101010110110000207"
daList(1998) = "100100110110150128"
daList(1999) = "100100101110000216"
daList(2000) = "110010010110000205"
daList(2001) = "110101001010140124"
daList(2002) = "110101001010000212"
daList(2003) = "110110100101000201"
daList(2004) = "010110101010120122"
daList(2005) = "010101101010000209"
daList(2006) = "101010101101170129"
daList(2007) = "001001011101000218"
daList(2008) = "100100101101000207"
daList(2009) = "110010010101150126"
daList(2010) = "101010010101000214"
daList(2011) = "101101001010000214" AddYear = vvdate(0) If ChgType = True Then 'True 阴历=>阳历
AddMonth = Val(Mid(daList(AddYear), 15, 2))
AddDay = Val(Mid(daList(AddYear), 17, 2))
conDate = DateSerial(AddYear, AddMonth, AddDay)
AddDay = vvdate(2)
For i = 1 To vvdate(1) - 1
AddDay = AddDay + 29 + Val(Mid(daList(vvdate(0)), i, 1))
Next i
Return DateAdd(DateInterval.Day, AddDay - 1, conDate) Else 'False 阳历=>阴历
CHUSHIHUA:
AddMonth = Val(Mid(daList(AddYear), 15, 2))
AddDay = Val(Mid(daList(AddYear), 17, 2))
conDate = DateSerial(AddYear, AddMonth, AddDay)
Dim vtDate As DateTime
Try
vtDate = CType(vDate, DateTime)
Catch ex As Exception
Throw New NotSupportedException("阳历日期输入错误!")
End Try
getDay = DateDiff(DateInterval.Day, conDate, vtDate)
If getDay < 0 Then AddYear = AddYear - 1 : GoTo CHUSHIHUA
AddDay = 1
AddMonth = 1
For i = 1 To getDay
AddDay = AddDay + 1
If AddDay = 30 + Mid(daList(AddYear), AddMonth, 1) Or (RunYue And AddDay = 30 + Mid(daList(AddYear), 13, 1)) Then
If RunYue = False And AddMonth = Val("&H" & Mid(daList(AddYear), 14, 1)) Then
RunYue = True
Else
RunYue = False
AddMonth = AddMonth + 1
End If
AddDay = 1
End If
Next
Return AddYear & "-" & AddMonth & "-" & AddDay
End If End Function
调用方法:
TextBox2.Text = GetChgDate(Trim(TextBox1.Text), True) 'True 阴历=>阳历 TextBox2.Text = GetChgDate(Trim(TextBox1.Text), False) 'False 阳历=>阴历