c# winform项目用到的部分知识点总结

本文介绍了如何将非标准日期格式转换为DateTime类型,并提供了计算两个日期之间的天数差值及判断是否跨月的方法。此外,还展示了在SQLite中处理日期字段的注意事项,包括字段格式化的重要性以及数据库创建和事务执行的示例。
摘要由CSDN通过智能技术生成

项目用到的知识点总结,欢迎大家吐槽:

        /// <summary>
        /// 转换非yyyy-MM-dd的字符串为DateTime类型
        /// </summary>
        public static void ConvertDateFormat() {
            string orginStr = "test-test-20130607.xls";
            string dateStr = orginStr.Split('-')[2].Split('.')[0];
            Console.WriteLine(dateStr);
            Console.WriteLine(DateTime.ParseExact(dateStr, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-M-d"));
        }

相关资料:

http://www.jb51.net/article/37007.htm

http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

 

 

        /// <summary>
        /// get the days of currDate minus lastDate;The result is negative is allowed 
        /// </summary>
        /// <param name="lastDateStr"></param>
        /// <param name="currDateStr"></param>
        /// <returns></returns>
        private int minusTwoDate(string lastDateStr,string currDateStr) {
            DateTime lastDate = Convert.ToDateTime(lastDateStr);
            DateTime currDate = Convert.ToDateTime(currDateStr);
            return (currDate - lastDate).Days;
        }

 

       /// <summary>
       /// judage whether cross the month;cross:true;
       /// </summary>
       /// <param name="lastDateStr">the last page recorded</param>
       /// <param name="currDateStr"></param>
       /// <returns></returns>
        private bool whetherCrossMonth(string lastDateStr, string currDateStr)
        {
            DateTime lastDate = Convert.ToDateTime(lastDateStr);
            DateTime currDate = Convert.ToDateTime(currDateStr);
            if (currDate.Month == lastDate.Month)//the same month
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        /// <summary>
        /// is last day:true;is not last day:false and return last date of month
        /// </summary>
        /// <param name="lastDateStr"></param>
        /// <param name="lastDayOfMonth">the last day of month or null</param>
        /// <returns>is last day:true;or false</returns>
        private bool wetherIsLastDay(string lastDateStr,out string lastDayOfMonth)
        {
            DateTime lastPageDate = Convert.ToDateTime(lastDateStr);
            //first day of month
            string lastDay = string.Empty;
            DateTime lastDateOfMonth = Convert.ToDateTime(lastPageDate.Year + "-" + lastPageDate.Month + "-" + DateTime.DaysInMonth(lastPageDate.Year, lastPageDate.Month));
            if ((lastDateOfMonth-lastPageDate).Days>0)
            {
                lastDayOfMonth =lastDateOfMonth.ToShortDateString();;
                return false;
            }// less than The last day of each month
            else
            {
                lastDayOfMonth = lastDay;
                return true;
            }// 
        }

sqlite方面:

//sql。如果businessDate字段不格式化为yyyy-MM-dd,则在max()对此字段取值会
//出现2013-1-9大于2013-1-10、2013-1-20的情况
sqlList.Add(String.Format("insert into test(businessName,businessDate,indb_datetime) values('{0}','{1}','{2}')", EventOrderKeyStr, fileDate.ToString("yyyy-MM-dd"), DateTime.Now.ToString()));

//入库环节
 DBHelperSqlite dhSqlite = new DBHelperSqlite();
 dhSqlite.ExecuteSqlTran(sqlList);

 

dbhelper:

        private string dbName = "cmcc2.db";
        private string connectionString = "Data Source=cmcc2.db;Pooling=true;FailIfMissing=false";
        /// <summary>
        /// if the db is not exists,create it and create the table
        /// </summary>
        public DBHelperSqlite()
        {
            string SQLCreateStr = "CREATE TABLE [cmcc_businesses_info] (businessName nvarchar(50),businessDate nvarchar(10),indb_datetime nvarchar(20))";

            #region CASE2
            FileInfo fi = new FileInfo(dbName);
            if (fi.Exists == false)
            {
                logger.InfoFormat("db不存在");
                //Console.WriteLine("db不存在");
                SQLiteConnection.CreateFile(dbName);
                logger.InfoFormat("db创建完成");
                using (SQLiteConnection conn = new SQLiteConnection(connectionString))
                {
                    conn.Open();
                    using (SQLiteCommand cmd = new SQLiteCommand(SQLCreateStr, conn))
                    {
                        if (cmd.ExecuteNonQuery() > 0)
                        {
                            logger.InfoFormat("表创建成功");
                            //Console.WriteLine("表创建成功");
                        }
                    }
                }
            }
            #endregion
        }//ctor

        /// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">多条SQL语句</param>        
        public void ExecuteSqlTran(IList<string> SQLStringList)
        {
            using (SQLiteConnection conn = new SQLiteConnection(connectionString))
            {
                conn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = conn;
                SQLiteTransaction tran = conn.BeginTransaction();
                cmd.Transaction = tran;
                try
                {
                    for (int n = 0; n < SQLStringList.Count; n++)
                    {
                        string strsql = SQLStringList[n].ToString();
                        if (strsql.Trim().Length > 1)
                        {
                            logger.Debug(strsql);
                            cmd.CommandText = strsql;
                            cmd.ExecuteNonQuery();
                        }
                    }
                    tran.Commit();
                }
                catch (System.Data.SQLite.SQLiteException ex)
                {
                    logger.Error(ex);
                    tran.Rollback();
                    //throw new Exception(ex.Message);
                }
            }
        }//trans
SubString函数使用时一个隐藏的“雷”:
        /// <summary>
        /// str.Substring(startIndex,length)如果length大于str的长度,就会报错
        /// </summary>
        public static void SubstringTest2()
        {
            string str = "4.333";
            string[] r = str.Split('.');
            if (r.Length == 2)
            {
                if (r[1].Length > 4)
                {
                    r[1] = r[1].Substring(0, 4);
                }

                Console.WriteLine(r[0] + "." + r[1]);
            }

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值