//今天是这周的第几天,是个英文星期,可以转换成intstring a = DateTime.Now.DayOfWeek.ToString();//今天//MessageBox.Show(Convert.ToInt32(DateTime.Now.DayOfWeek) + "");昨天MessageBox.Show(DateTime.Now.AddDays(-1).ToString());//星期一,相对当前时间MessageBox.Show(DateTime.Now.AddDays(-Convert.ToInt32(DateTime.Now.DayOfWeek) + 1).ToString());//星期日,相对当前时间MessageBox.Show(DateTime.Now.AddDays(-Convert.ToInt32(DateTime.Now.DayOfWeek) + 7).ToString());//今天0点MessageBox.Show("Test" + DateTime.Today);/*个人感觉now , today 作用及相似, 但是now 是现在,today是从今天0点开始,它们用法相似。*///本周星期一0点到星期天0点 MessageBox.Show(-Convert.ToInt32(DateTime.Today.DayOfWeek) + ""); -5 得到上个星期天MessageBox.Show(DateTime.Today.AddDays(-Convert.ToInt32(DateTime.Today.DayOfWeek) + 1).ToString());MessageBox.Show(DateTime.Today.AddDays(-Convert.ToInt32(DateTime.Now.DayOfWeek) + 8).ToString());//本月第一天string fristDayOfMonth = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + 1;//本月最后一天string lastDayOfMonth = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);DateTime dt;bool b = DateTime.TryParse(lastDayOfMonth, out dt);if (b) //true,可以判断这个字符串是不是日期MessageBox.Show("Test");//各种加法系列。点一个一个的... MessageBox.Show("Test" + DateTime.Today.DayOfWeek);// FridayDateTime dt = DateTime.Today;dt.AddDays(1);dt.AddHours(1.2);dt.AddMinutes(2.0);dt.AddSeconds(10);dt.AddYears(1);//MessageBox.Show("Test" + dt);日期部分MessageBox.Show(dt.ToLongDateString());//时间部分MessageBox.Show(dt.ToLongTimeString());//本季度第一个月DateTime firstOfQuater = dt.AddMonths(-(dt.Month - 1) % 3).AddDays(- dt.Day + 1);// 10 月 1 号//本季度最后一月DateTime lastOfQuater = firstOfQuater.AddMonths(3).AddDays(-1);DateTime dt1 = Convert.ToDateTime("2019-11-08 20:20");//现在和dt1两个日期 相减 得到 一个时间间隔TimeSpan span = DateTime.Now - dt1;//现在和 dt1 查了具体的几个小时 , 保留了一位小数MessageBox.Show(span.TotalHours.ToString("f1") + "");//相差了几小时,几分钟MessageBox.Show(span.Hours + "小时" + span.Minutes + "分钟");//基于以上可实用的日期总结,其它的随便玩玩。针对季度的 , 卡 -0 , -1 , -2 月,这样好像便于理解为什么有个减一了。
PS:
快一个月,我没写博客了,多在忙于写项目,一个小小的餐饮管理项目,居然花了我很多时间。。。而且戏剧性的是
到今天项目答辩时,还出了bug。。。关于退菜,居然还可以负数。。。但是项目完成了,我太感觉还好了,没有判断,其数量不可以退到负数,
因为以前退菜是一个一个退的,就不至于,有负数,listview中就不会显示。
这个项目是 多层结构 +.net(ado.net) + sqlserver技术,便可完成。对于界面这个东西,可以千奇百怪,花里胡哨。
.net 的学习,到此可能就这样了。。。
自己写的代码,让自己运行看,永远找不到最精确的效果,要别人帮忙来看的你的项目,来测试。发现bug ,并解决。
Point 1 What I Learn ?
多层结构的 熟悉使用 ,少许的几个控件 , 时间日期的把控 , 还是 基于面向对象的封装。。。
继承多态,并未使用。
字符串操作相当是复习了一部分。。。
动态控件的使用 , 并生成对应的事件 。还有tag 这个重要的东西,可以绑定对应的对象,让你少写一点代码。
内存操作,利用集合判断 某个东西是否合法;点菜,利用一个暂停的集合,点菜,退菜
lambda表达式。在dgv或者listview 得到一个对象。 λ 。
Products t = (dgv.DataSource as List<Products>).find(pt => pt.productid = dgv.SelectedRows[0].Cells[0].Value.ToString());
Point 2
其它控件的 取值,要合法,做判断。这种判断是必须必须的否则程序数据出错。
增删改,匹配数据库。
Point 3
在查一个数据表时,需要统计某个列的数量,但是这会用到分组查询,没有正确的结果,
但是,可以用子查询,把要查的这个数据的 单独查,再把这个sql语句看成是一个表。
select pt.PTName,p.ProductName,back,cd.CDDate from (select distinct cd.prodcutid, count(CDType) as 'back' from ConsumerDetails cd inner join products pon cd.prodcutid = p.productidgroup by cd.prodcutid,cd.CDDate) t inner join Products pon t.ProdcutID = p.ProductID inner join ProductType pton p.PTID = pt.PTID inner join ConsumerDetails cd on cd.ProdcutID = p.ProductID inner join ConsumerBill cbon cb.CBID = cd.CBIDwhere cd.CDType = 1 and 1=1