代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
中文日期转C#日期
作者:
Dezai.CN
/ 发布于
2011/5/10
/
554
<div> <font color="#993300">using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions;</font> <font color="#993300">namespace Tookit { public class Chinese2Number { /// <summary> /// 将字符串转成日期类型,如二○○七年十二月六日,转成2007-12-6 /// </summary> /// <param name="strNumber"></param> /// <returns></returns> public DateTime ConvertTime(string strNumber) { //如果字符长度为空,则返回最小的日期值 if (strNumber == null || strNumber == "") { return DateTime.MinValue; } try { return Convert.ToDateTime(strNumber); } catch { } Regex re = new Regex(@"(\S{1,4})年(\S{1,2})月(\S{1,3})日", RegexOptions.None); string[] lines = re.Split(strNumber); //如果没有匹配成功,则返回最小的日期值 if (lines.Length < 1) { return DateTime.MinValue; } int n1, n2, n3; try { n1 = this.CovertSimple(lines[1]); n2 = this.ConvertTwo(lines[2]); n3 = this.ConvertTwo(lines[3]); } catch { n1 = n2 = n3 = 1; } string newStr = n1 + "-" + n2 + "-" + n3; try { return Convert.ToDateTime(newStr); } catch { return DateTime.MinValue; } } /// <summary> /// 单个的中文转数字 /// </summary> /// <param name="strNumber"></param> /// <returns>不成功,则返回 -1</returns> public int ConvertOne(string strNumber) { //如果字符长度为空,则返回0 if (strNumber == null || strNumber == "") { return -1; } //取第一个字符 strNumber = strNumber.Substring(0, 1); string[] chNumber = new string[] { "零|○|o|O|0", "一|壹", "二|贰", "三|叁", "四|肆", "五|伍", "六|陆", "七|柒", "八|捌", "九|玖", "十|拾" }; for (int i = 0; i < chNumber.Length; i++) { string[] tlist = chNumber[i].Split('|'); for (int j = 0; j < tlist.Length; j++) { if (tlist[j] == strNumber) { return i; } } } return -1; } /// <summary> /// 三位中文数以下的(即两位数字),转数字;即九十八、十六、七十二、等 /// </summary> /// <param name="strNumber"></param> /// <returns>不成功则转为 -1</returns> public int ConvertTwo(string strNumber) { //如果字符长度为空,则返回0 if (strNumber == null || strNumber == "") { return -1; } //取字符长度 int len = strNumber.Length; if (len == 1) { return ConvertOne(strNumber.Substring(0, 1)); } if (len == 2) { strNumber = strNumber.Substring(0, 2); //如果第一个字符为“十”,即十以上,二十以下的数 string ten = strNumber.Substring(0, 1); if (ten == "十") { ten = strNumber.Substring(1, 1); return Convert.ToInt32("1" + ConvertOne(ten).ToString()); } else { return Convert.ToInt32(ConvertOne(ten).ToString() + "0"); } } if (len == 3) { string s = strNumber.Substring(0, 1); string g = strNumber.Substring(2, 1); return Convert.ToInt32(ConvertOne(s).ToString() + ConvertOne(g).ToString()); } return -1; } /// <summary> /// 简单转换,中文数字直接转数字;如二○○七,转成2007;主要用于年份 /// </summary> /// <param name="strNumber"></param> /// <returns></returns> public int CovertSimple(string strNumber) { //如果字符长度为空,则返回0 if (strNumber == null || strNumber == "") { return -1; } string t = ""; int i = 0; foreach (char s in strNumber) { i = ConvertOne(s.ToString()); if (i > -1) { t += i.ToString(); } else { t += 0.ToString(); } } return Convert.ToInt32(t); } </font> <font color="#993300">/// <summary> /// 查出一段字符串中的字期类的字符,最后一个日期 /// </summary> /// <param name="str"></param> /// <returns></returns> public string SearchDate(string str) { Regex re = new Regex(@"(\S{1,4})年(\S{1,2})月(\S{1,3})日", RegexOptions.None); MatchCollection mc = re.Matches(str); int i = 0; foreach (Match ma in mc) { i++; if(i==mc.Count) return ma.Value; } return ""; } }</font> <font color="#993300">} </font> <font color="#993300"><font color="#000000">在上面代码中,有这样一段</font> string[] chNumber = new string[] { "零|○|o|O|0", "一|壹", "二|贰", "三|叁", "四|肆", "五|伍", "六|陆", "七|柒", "八|捌", "九|玖", "十|拾" }; </font><font size="+0">不要奇怪那个“零|○|o|O|0 ”,因为他们输的中文日期,二〇〇七年中的那个0用什么的都有,我只好把所有是圈的字符都弄上次;</font> </div>
试试其它关键字
中文日期转C#日期
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3