有时我们看到了需要列出我们的数据库中任何表的元数据(您知道该字段的名称,它的数据类型和长度)为例子,创建一个函数,允许我到一个表中插入数据。这是好的做法,写在我们的应用程序源代码的SQL语句,因为它是一个双汇编导致您失去的执行速度,但这个例子也可以采取建立自己指挥函数调用存储过程经理插入数据(如数据库管理器SP的支持女士例如SQL Server,MySQL等)。
源代码在微软的Visual Basic 6.0编写的攻击数据库女士访问:
'------------------------------------------------- ---------------------------------------------
在微软的Visual Basic 6.0编写的函数来读取数据和元数据
'无论是作为一个参数传递表...
公共职能Auditar_X(如字符串表)作为ADODB.Recordset
的SQL =“选择*从”及表
cn.CursorLocation =为adUseClient
设定RS = cn.Execute(SQL)的
九月Auditar_X =遥感
完功能
'端的功能...
'------------------------------------------------- ---------------------------------------------
'函数功能枪(双关语意)到表项目中插入数据...
私人小组cmdAceptar_Click()
误差页转到电子
ArtTipoDato作为字符串暗淡,作为字符串艺术
昏暗的表作为字符串,字符串值
作为String ComillasDobles暗淡
'染色体(10)=输入
'染色体(13)=统计表
ComillasDobles =“”“”
表=“文章”
值=&vbTab&vbTab ComillasDobles&“值(”
艺术=的“SQL =”&ComillasDobles&vbTab&“的INSERT INTO”&表&“(”
如果Me.ListView1.ListItems(1)。选中,
frmCatDocumentos.Show 1
结束如果
如果Me.ListView1.ListItems(2)。选中,
'MsgBox“卡迪斯”
我作为整数暗淡
设定RS = Me.Auditar_X(表)
Me.List1.Clear
ArtTipoDato =“公共子插入”及表&“(”
对于i = 0到rs.Fields.Count
'Me.List1.AddItem rs.Fields(一)名称及。“ - ”&的TypeName(rs.Fields(一)值。)&“ - ”&rs.Fields(一)DefinedSize。
Me.List1.AddItem rs.Fields(一)。名称及“作为”&的TypeName(rs.Fields(一)。价值)&“”
ArtTipoDato = ArtTipoDato&rs.Fields(我)。姓名及“作为”&的TypeName(rs.Fields(一)。价值)&“”
艺术与艺术= rs.Fields(我)。姓名&“”
如果UCase(的TypeName(rs.Fields(一)。值))=“字符串”,然后
值=值&“'”&ComillasDobles&“&”&rs.Fields(i)条。名称&“&”&ComillasDobles&“'”
结束如果
如果UCase(的TypeName(rs.Fields(一)。值))=“日期”,然后
值=值&“#”&ComillasDobles&“&”&rs.Fields(一)。名称&“&”&ComillasDobles&“#”
价值观=值&“#”&rs.Fields(我)。姓名&“#”
结束如果
如果UCase(的TypeName(rs.Fields(一)。值))=“长”或UCase(的TypeName(rs.Fields(一)。价值))=“双重”然后
值=值&“”&ComillasDobles&“&”&rs.Fields(i)条。名称&“&”&ComillasDobles&“”
价值观=值&“”&rs.Fields(i)条。名称&“,&”
结束如果
'MsgBox rs.Fields(我)。姓名
'MsgBox rs.Fields(一)。价值
'MsgBox的TypeName(rs.Fields(一)。价值)
接下来,我
结束如果
'MsgBox ArtTipoDato
ArtTipoDato =左(ArtTipoDato,莱恩(ArtTipoDato) - 1)
ArtTipoDato = ArtTipoDato&“)”
艺术=左(艺术,莱恩(艺术) - 1)
艺术=艺术&“)”&ComillasDobles&“&_”
左值=(值,莱恩(价值观) - 1)
值=值&“)”
Me.lb.Caption = ArtTipoDato艺术与价值观
值=价值观与“设定RS = cn.Execute(SQL)的”
值=价值观和“结束子”
Me.Te.Text = ArtTipoDato及染色体(13)艺术&染色体(13)与价值观
如果Me.ListView1.ListItems(3)。选中,
frmCatArticulos.Show 1
结束如果
如果Me.ListView1.ListItems(4)。选中,
MsgBox“退出”
结束如果
电子邮件:
继续下一步
结束小组
'------------------------------------------------- ---------------------------------------------
'这是正在运行的功能前面的代码...
公共子InsertarARTICULOS(条字符串,字符串描述为,
卖方作为字符串,字符串UMP_C作为字符串作为,UMP_V,
FACTOR_CONVER一样长,双COSTO_UMC作为兼作,COSTO_UMV,
PRECIO_V作为字符串,字符串字符串作为资产,USR_CREACION,
FECHA_HORA_CREACION日期,字符串USR_MODIFICACION为,
FECHA_HORA_MODIFICACION如日期)
的SQL =“插入项目助理(文章,评论,供应商
UMP_C,UMP_V,FACTOR_CONVER,COSTO_UMC,COSTO_UMV,PRECIO_V,
主动USR_CREACION,FECHA_HORA_CREACION,USR_MODIFICACION,
FECHA_HORA_MODIFICACION)“&_
“的值('”&组及"','"及描述&"','"与供应商
&"','"&UMP_C&"','"&UMP_V&“',”&FACTOR_CONVER&“”
&COSTO_UMC&“”&COSTO_UMV&“'”&PRECIO_V&"','"&主动
&"','"&USR_CREACION&"',#"&FECHA_HORA_CREACION&"#,'"
&USR_MODIFICACION&"',#"&FECHA_HORA_MODIFICACION&“#)”
设定RS = cn.Execute(SQL)的
结束小组
'端的功能...
'------------------------------------------------- ---------------------------------------------
现在您已经准备好要加入InsertarARTICULOS功能和程序的调用从任何地方英寸Tiep使我们获得很多的功能InsertarARTICULOS秒我想说的是,如何长时间才能上写的脚,我会说.....分钟
有时我们看到了需要列出我们的数据库中任何表的元数据(您知道该字段的名称,它的数据类型和长度)为例子,创建一个函数,允许我到一个表中插入数据。这是好的做法,写在我们的应用程序源代码的SQL语句,因为它是一个双汇编导致您失去的执行速度,但这个例子也可以采取建立自己指挥函数调用存储过程经理插入数据(如数据库管理器SP的支持女士例如SQL Server,MySQL等)。
源代码在微软的Visual Basic 6.0编写的攻击数据库女士访问:
'------------------------------------------------- ---------------------------------------------
在微软的Visual Basic 6.0编写的函数来读取数据和元数据
'无论是作为一个参数传递表...
公共职能Auditar_X(如字符串表)作为ADODB.Recordset
的SQL =“选择*从”及表
cn.CursorLocation =为adUseClient
设定RS = cn.Execute(SQL)的
九月Auditar_X =遥感
完功能
'端的功能...
'------------------------------------------------- ---------------------------------------------
'函数功能枪(双关语意)到表项目中插入数据...
私人小组cmdAceptar_Click()
误差页转到电子
ArtTipoDato作为字符串暗淡,作为字符串艺术
昏暗的表作为字符串,字符串值
作为String ComillasDobles暗淡
'染色体(10)=输入
'染色体(13)=统计表
ComillasDobles =“”“”
表=“文章”
值=&vbTab&vbTab ComillasDobles&“值(”
艺术=的“SQL =”&ComillasDobles&vbTab&“的INSERT INTO”&表&“(”
如果Me.ListView1.ListItems(1)。选中,
frmCatDocumentos.Show 1
结束如果
如果Me.ListView1.ListItems(2)。选中,
'MsgBox“卡迪斯”
我作为整数暗淡
设定RS = Me.Auditar_X(表)
Me.List1.Clear
ArtTipoDato =“公共子插入”及表&“(”
对于i = 0到rs.Fields.Count
'Me.List1.AddItem rs.Fields(一)名称及。“ - ”&的TypeName(rs.Fields(一)值。)&“ - ”&rs.Fields(一)DefinedSize。
Me.List1.AddItem rs.Fields(一)。名称及“作为”&的TypeName(rs.Fields(一)。价值)&“”
ArtTipoDato = ArtTipoDato&rs.Fields(我)。姓名及“作为”&的TypeName(rs.Fields(一)。价值)&“”
艺术与艺术= rs.Fields(我)。姓名&“”
如果UCase(的TypeName(rs.Fields(一)。值))=“字符串”,然后
值=值&“'”&ComillasDobles&“&”&rs.Fields(i)条。名称&“&”&ComillasDobles&“'”
结束如果
如果UCase(的TypeName(rs.Fields(一)。值))=“日期”,然后
值=值&“#”&ComillasDobles&“&”&rs.Fields(一)。名称&“&”&ComillasDobles&“#”
价值观=值&“#”&rs.Fields(我)。姓名&“#”
结束如果
如果UCase(的TypeName(rs.Fields(一)。值))=“长”或UCase(的TypeName(rs.Fields(一)。价值))=“双重”然后
值=值&“”&ComillasDobles&“&”&rs.Fields(i)条。名称&“&”&ComillasDobles&“”
价值观=值&“”&rs.Fields(i)条。名称&“,&”
结束如果
'MsgBox rs.Fields(我)。姓名
'MsgBox rs.Fields(一)。价值
'MsgBox的TypeName(rs.Fields(一)。价值)
接下来,我
结束如果
'MsgBox ArtTipoDato
ArtTipoDato =左(ArtTipoDato,莱恩(ArtTipoDato) - 1)
ArtTipoDato = ArtTipoDato&“)”
艺术=左(艺术,莱恩(艺术) - 1)
艺术=艺术&“)”&ComillasDobles&“&_”
左值=(值,莱恩(价值观) - 1)
值=值&“)”
Me.lb.Caption = ArtTipoDato艺术与价值观
值=价值观与“设定RS = cn.Execute(SQL)的”
值=价值观和“结束子”
Me.Te.Text = ArtTipoDato及染色体(13)艺术&染色体(13)与价值观
如果Me.ListView1.ListItems(3)。选中,
frmCatArticulos.Show 1
结束如果
如果Me.ListView1.ListItems(4)。选中,
MsgBox“退出”
结束如果
电子邮件:
继续下一步
结束小组
'------------------------------------------------- ---------------------------------------------
'这是正在运行的功能前面的代码...
公共子InsertarARTICULOS(条字符串,字符串描述为,
卖方作为字符串,字符串UMP_C作为字符串作为,UMP_V,
FACTOR_CONVER一样长,双COSTO_UMC作为兼作,COSTO_UMV,
PRECIO_V作为字符串,字符串字符串作为资产,USR_CREACION,
FECHA_HORA_CREACION日期,字符串USR_MODIFICACION为,
FECHA_HORA_MODIFICACION如日期)
的SQL =“插入项目助理(文章,评论,供应商
UMP_C,UMP_V,FACTOR_CONVER,COSTO_UMC,COSTO_UMV,PRECIO_V,
主动USR_CREACION,FECHA_HORA_CREACION,USR_MODIFICACION,
FECHA_HORA_MODIFICACION)“&_
“的值('”&组及"','"及描述&"','"与供应商
&"','"&UMP_C&"','"&UMP_V&“',”&FACTOR_CONVER&“”
&COSTO_UMC&“”&COSTO_UMV&“'”&PRECIO_V&"','"&主动
&"','"&USR_CREACION&"',#"&FECHA_HORA_CREACION&"#,'"
&USR_MODIFICACION&"',#"&FECHA_HORA_MODIFICACION&“#)”
设定RS = cn.Execute(SQL)的
结束小组
'端的功能...
'------------------------------------------------- ---------------------------------------------
现在您已经准备好要加入InsertarARTICULOS功能和程序的调用从任何地方英寸Tiep使我们获得很多的功能InsertarARTICULOS秒我想说的是,如何长时间才能上写的脚,我会说.....分钟
在过去的35年中,公司对计算机硬件的设计师已经设计大型设备的笔记本电脑的微处理器上。
在这同一时期,软件开发人员已经从汇编写程序写在C +或C +。显然,发展的世界进步的软件不是世界上最快的速度为硬件。因此,重要的问题是,什么是 硬件设计到软件开发人员不?
这个问题的答案在于硬件工作方式的硬件设计师,他们使用的部件和系统的开发形式。
重用的组件,也是一个方法来创建更好的软件。今天的软件开发人员从头开始,按照过去,导致许多程序员在相同的步骤。从现有的已经过测试组件的新系统的创建,总是容易产生更可靠的代码。此外,它已被证明是更快,更便宜。
1970年至1990年,分析师开发的软件和面向对象的方法在1994年,有超过50个对象方法。然而,只有3达到普及的方法:
1994年,鲁博, Booch和雅各布森在1995年联手开发的定义语言UML(统一建模语言),它定义了一些以前的方法标准的优势,语言纳入。
今天,面向对象编程不仅影响编程语言,而且在分析和设计一个给定的系统,包括数据库管理系统是面向对象的数据,如PostgreSQL(开源数据库管理系统为导向对象)。
所有这些进步已经采取这种技术是由于广泛的功能和优势,对结构化编程。
有一些优势,这种编程方式:
1。 提高代码的重用和扩展。
2。 允许您创建更复杂的系统。
3。 设法涉及真实的世界。
4。 有利于发展的方案视觉。
5。 原型
6。 简化软件开发
7。促进团队精神
8。 大大方便了软件维护
然后显示一个列出的语言编程,面向对象:
这些编程语言的许多不纯粹的面向对象的,但杂交相结合
像C + +其他语言,如OOCOBOL , OOLISP , OOPROLOG和对象的REXX ,加入已创建扩展的面向对象编程语言的经典。
嗯,不只是Java的人的生活。偶尔我一起工作。对于一些具体项目的净有一次,我发现一些东西,使我与Visual Studio 2005的头痛。这个工具,他们带来了控制台调试转储数据,这些数据中可以被禁用的选项,但它通常是有帮助的。这个工具的缺点是,它可以清除该控制台使用命令Console.Clear(),显然这令不适用于立即窗口。
在这个项目中已显示出一些时,他被迫进入调试模式的信息,所以我开始着手寻找解决办法。最快速和肮脏(快速和肮脏的),我得到的是这样的:
创建一个类,包含下面的代码:
使用系统;使用的参数结构nsClearConsole命名空间{/ / / / / /摘要说明ClearConsole。 / / /
公共类{私人常量诠释ClearConsole STD_OUTPUT_HANDLE = -11;私人常量空字节= 32; [StructLayout(LayoutKind.Sequential)]结构的COORD {公共短x;公共短Ÿ;} [StructLayout(LayoutKind.Sequential)]结构{公共短左SMALL_RECT,公共短期顶部;公共短的权利;公共短底;} [StructLayout(LayoutKind.Sequential)] {市民的COORD结构的dwSize CONSOLE_SCREEN_BUFFER_INFO,公共dwCursorPosition的COORD,公共诠释wAttributes,公共srWindow SMALL_RECT,公共dwMaximumWindowSize的COORD;} [DllImport的(“kernel32.dll”的,的EntryPoint =“GetStdHandle “,SetLastError =真正的,字符集= CharSet.Auto,CallingConvention = CallingConvention.StdCall)]私有静态外部诠释GetStdHandle(智力nStdHandle)[DllImport的(”kernel32.dll“的,的EntryPoint =”FillConsoleOutputCharacter“,SetLastError =真正的,字符集=字符集。自动,CallingConvention = CallingConvention.StdCall)]私有静态外部诠释FillConsoleOutputCharacter(智力hConsoleOutput,cCharacter字节,诠释nLength,地理座标dwWriteCoord参诠释lpNumberOfCharsWritten)[DllImport的(“kernel32.dll”的,的EntryPoint =“GetConsoleScreenBufferInfo”,SetLastError =真,字符集= CharSet.Auto,CallingConvention = CallingConvention.StdCall)]私有静态外部诠释GetConsoleScreenBufferInfo(智力hConsoleOutput,参考CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo)[DllImport的(“kernel32.dll”的,的EntryPoint =“SetConsoleCursorPosition”,SetLastError =真正的,字符集的CharSet = 。自动,CallingConvention = CallingConvention.StdCall)]私有静态外部诠释SetConsoleCursorPosition(智力hConsoleOutput,地理座标dwCursorPosition)私人诠释hConsoleHandle,公共ClearConsole(){/ / / / TODO:在此处添加构造函数逻辑。 / / HConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);}公共无效清除(){诠释hWrittenChars = 0; CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO strConsoleInfo =新();的COORD主页; Home.x = Home.y = 0; GetConsoleScreenBufferInfo(hConsoleHandle,参考strConsoleInfo)FillConsoleOutputCharacter(hConsoleHandle,空,strConsoleInfo.dwSize.x * strConsoleInfo.dwSize.y,民政,参考hWrittenChars)SetConsoleCursorPosition(hConsoleHandle,民政);}}} 在稍后的部分,我们需要清洁控制台必须调用下面的代码片断,它创建类的一个实例,然后调用ClearConsole清除干净的方法,终于在控制台。
ClearConsole ClearConsole cs的=新(); cs.Clear();
最后,因为在一开始就提到,这个技巧并不适用于从Visual Studio 2005来立即控制台,我们必须告诉一个控制台程序,在MS DOS的运行的破解工作:
#如果DEBUG ConsoleEx.AllocConsole();#endif
这应该是在窗体或类的代码,我们正在开发项目的启动。最后,它应该也有类以分配或释放控制台。因此,在一类本身应该把下面的代码:
利用系统; GetSystemInfo的参数,公共静态类ConsoleEx {[DllImport的(“kernel32.dll”的]公共静态外部布尔AllocConsole(); [DllImport的(“kernel32.dll中”)]公共静态外部布尔FreeConsole() ;} 到那个时候,足有一个MS DOS控制台的调试时间,我们干净。所以这里是如果有人需要它。这个例子是用C#,但我可以想象,那些在Visual Basic流利。NET可以适应。该解决方案是采取了以下部分从微软KB的 。
早在2001年,公司通过软件开发商Ximian的手米格尔德伊卡萨(墨西哥的自由。在他的贡献是在GNOME项目的基础,驱动程序文件或文件午夜指挥官,gnumeric的,矮黑猩猩的组件模型)驱动ECMA标准Mono项目plataforma.Net微软和开源实现。其目的是提供一个免费的软件平台,方便Linux开发的应用程序。
2003年1月,Novell公司收购Ximian和给予的支持与Miguel德伊卡萨进行Mono项目,目前拥有员工约20 Novell工程师和帮助,从300多名志愿者。
C#是平台的一部分。这构成了分布的Mono平台的C#编译器,虚拟机(允许运行的应用程序),以及数以千计的功能,提供定置网的类库包。
Mono应用程序可以写在多种编程语言,包括包括Python,Object Pascal中,Nermele和C#。一旦书面申请,被翻译成华建(通用中间语言),它是一个中间语言是不特定的任何建筑。一旦编译成CIL的实施转化的最终架构,它会被执行特定的语言。该系统可以分配一个单一的二进制程序,而不是对所有为每个平台的具体方案架构。莫诺现在提供的工具来建立Linux,Solaris和Windows,苹果机/ OS和IBM大型机应用程序。不像在系统上直接运行的传统节目,Mono平台方案对实施控制的环境中运行的虚拟机称为
单声道提供了必要的功能来创建Web服务技术,包括XML,肥皂,ASP.NET和Remoting和通过ADO.NET访问,键入甲骨文,MySQL和DB2时,SQL Server数据库,或进展情况。有了这些库可以在Windows或服务进行开发我们自己的作品为能够使用Apache Web服务器。对于客户端应用程序开发用户界面的多个选项。一方面它提供了一个命名空间(由Microsoft提供的选项)的开源实现在停机坪所作的事态发展。在Windows网络可以在像Linux或Mac OS等平台上运行。 Gtk#的还提供了一个库,公开所有的GNOME图形环境,允许跨平台应用程序的功能。
我个人推荐两个IDE的自由与单声道:
在一些应用程序在开发桌面点我们的生活,因为我们已经看到了)的必要性6.0收集资料片(女士SSTab控件的Visual Basic,但我们有一些困难或关闭(我们没有标签标签所),由因此,要避免这种情况再次,这里有一个基本的函数类型6.0在MS Visual启用或禁用标签SSTab控件。
此功能称为Activar_Desactivar_Pestanas,并接收作为参数使 (激活标签) 或 False(禁用标签)和对照名称标签。
公共子Activar_Desactivar_Pestanas(启用为Boolean,由于SSTab佩斯塔纳)
对于i = 0到Pestana.Tabs - 1
如果启用之后
Pestana.TabEnabled(一)=真
其他
Pestana.TabEnabled(一)=假
结束如果
下一页
结束小组
当程序员开发应用程序(桌面或Web)应考虑最终用户,这是习惯了某些Windows(接口),其中一些作品的形式(例如会计师使用ENTER比鼠标更),则原因是,它应该包括最终用户的一些习惯看到的功能。
在Microsoft Excel 2003中,我们看到下面的窗口的xxx显示当您按鼠标右键/插入工作表的名称。所以在这个例子中,我模拟这个窗口。
这个例子是一个资料库系统的一部分。这个想法是,用户可以选择:文件。其他(工作文件),卡迪斯(看文章的运动)或项目主(我们自己的数据项),选定后,按确定按钮。
在这个例子中使用Microsoft Visual Basic 6.0编程语言和主要有以下控件:
1的ListView(用于显示图像。)
1的ImageList(图像存储)。
源代码完成的ListView
私人小组Form_Load()
昏暗由于ColumnHeader column_header
作为ListItem的,通常这种暗淡
值=“”
国家=“”
'创建列标题。
Column_header = ListView1九月。 _
ColumnHeaders.Add(,,“缩写”,_
TextWidth(“其他文件”))
Column_header = ListView1九月。 _
ColumnHeaders.Add(,,“标题”,_
TextWidth(卡迪斯“))
Column_header = ListView1九月。 _
ColumnHeaders.Add(,,“书号”,_
TextWidth(“第大师”))
Column_header = ListView1九月。 _
ColumnHeaders.Add(,,“书号”,_
TextWidth(“退出”))
ListView1.Icons = imgLarge
九月,通常这种ListView1.ListItems.Add =(,,“医生。不同)
list_item.Icon = 1
list_item.SmallIcon = 1
list_item.SubItems(1)=“准备到运行Visual Basic算法”
list_item.SubItems(2)=“0-471-24268-3”
通常这种九月ListView1.ListItems.Add =(,,“卡迪斯)
list_item.Icon = 2
list_item.SmallIcon = 2
list_item.SubItems(1)=“Visual Basic图形程序设计”
list_item.SubItems(2)=“0-471-15533-0”
九月,通常这种ListView1.ListItems.Add =(,,“项目主”)
list_item.Icon = 3
list_item.SmallIcon = 3
list_item.SubItems(1)=“自定义控件”
list_item.SubItems(2)=“0-471-24267-5”
通常这种九月ListView1.ListItems.Add =(,,“退出”)
list_item.Icon = 4
list_item.SmallIcon = 4
list_item.SubItems(1)=“先进的可视化”
list_item.SubItems(2)=“0-471-18881-6”
结束小组
项目的源代码向下的ListView
私人小组cmdAceptar_Click()
误差页转到电子
如果Me.ListView1.ListItems(3)。选中,
frmCatArticulos.Show 1
结束如果
'......
电子邮件:
继续下一步
结束小组
文章的构思,这是为了展示如何建立一个动态的WHERE子句,所以如果你有一)形成两个文本框(NoCliente,ClientName)和一个命令按钮来筛选(为了执行SELECT查询,那么用户键入一个在箱子里的东西,在',其中唯一的变化求一块田说,如果他的文本框,在这两个'那么,去哪儿都问是难民营。
过滤器=“”
如果。TxtNoCliente.Text <>“”那
过滤器=“客户端=”&。TxtNoCliente.Text
结束如果
如果。TxtNombre.Text <>“”那
如果过滤器<>“”那
过滤器过滤=&“和名称如'”&。TxtNombre.Text&“%'”
其他
过滤器及过滤=“名称如'”&。TxtNombre.Text&“%'”
结束如果
结束如果
结束
'发送到运行查询
结束小组
这个例子是例如当想要访问一列中搜索一个特定的数据,增加或减去值中有用的细胞。
此功能是SumarSubTotales名,返回一个double值(总和结果的),接收2个参数(在Flex名称一这将使之旅,一个数字(彩色),表示该列是被添加到。
使用Flex
我= 2。对行- 1
SubT = SubT + TextMatrix。( - 。行数,列)
接下来,我
结束
SumarSubTotales =回合(SubT,2)
完功能
这个类给他的朋友阿曼阿拉尼斯。是一个类来计算两个日期之间,不少在其本身使用明确的区别。然后代码:
进口java.util.Calendar的;
进口java.util.Date的;
/ **
* @ j的作者阿曼多阿拉尼斯阿拉贡
* @既然20090312
* @版本1.0
* /
DateUtil {public final的类
最后诠释公共静态年= 0;
公共静态最终诠释月= 1;
私有静态诠释getDateDiffInYears(日期的startDate,日期结束日期){
getDateDiffInMonths回报(的startDate,结束日期)/ 12;
}
私有静态诠释getDateDiffInMonths(日期的startDate,日期结束日期){
StartCal日历= Calendar.getInstance();
EndCal日历= Calendar.getInstance();
StartY诠释= -1,startMonth = -1;
endYear诠释= -1,endMonth = -1;
诠释个月= 0;
诠释系数= 1;
如果(startDate.after(结束日期)){
系数= -1;
startCal.setTime(结束日期);
endCal.setTime(的startDate);
否则{}
startCal.setTime(的startDate);
endCal.setTime(结束日期);
}
StartY = startCal.get(Calendar.YEAR)
startMonth = startCal.get(Calendar.MONTH)+ 1;
endYear = endCal.get(Calendar.YEAR)
endMonth = endCal.get(Calendar.MONTH)+ 1;
如果(StartY == endYear){
个月= endMonth - startMonth;
否则{}
个月= 12 - startMonth;
个月+ = endMonth;
- EndYear;
如果(endYear - StartY> 0){
个月+ =(endYear - StartY)* 12;
}
}
几个月*=因素;
回个月;
}
公共静态诠释getDateDiff(int字段,日期的startDate,日期结束日期){
如果(场==年度){
getDateDiffInYears回报(的startDate,结束日期);
}否则,如果(场==个月){
getDateDiffInMonths回报(的startDate,结束日期);
否则{}
返回0;
}
}
}