日期处理情形:
1:判断是否是日期格式 比如20202020 月份肯定不能大于12
2:转化日期格式 convert format
3:比较日期 (求差值,设置差值,部分内容比较,是否相等) datediff datepart datename dateadd
一:判断是否是日期格式
C#
列如:var newdate="20190101"
C#可以去 先变成2019-01-01 然后 Convert.ToDateTime(newdate); 转化不成就不是日期
在try catch 中去检测 如果不是就catch里面处理
try
{
var data="20190101" ;
var newdate = data.Substring(0, 4) + "-" + data.Substring(4, 2)+"-" + data.Substring(6);
DateTime dt = Convert.ToDateTime(newdate);
type = yes;
}
catch (Exception)
{
type = not;
}
JS:
var aaa = new Date("2010/8/12");
alert(aaa);成功返回日期失败返回NaN
二:格式化日期
JS:
已知 字符串yyyyMMdd转到 yyyy-MM-dd
1:var r="20112233".replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3")
2:substring 截取三段然后在中间加上-
3:使用slice 类似截取 var str = "Hello,world!";var newStr = str.slice(0,5)+'-local'+str.slice(5) //Hello-local,world!
C#:
如果是正常能识别的日期格式的字符串 convert.todatetime() datetime.parse() 都可以 如果是19900901这样不是日期格式的字符串 可以使用 DateTime.ParseExact
string temp = "18991230" ;
DateTime dateTemp = DateTime.ParseExact(temp, "yyyyMMdd", CultureInfo.CurrentCulture, DateTimeStyles.None);
最大值
SqlDateTime.MaxValue.Value;
linq 比较日期 大小
DbFunctions.DiffDays(t.CreatTime.Value, DateTime.Now) == 0
数据库:
convert 函数 利用各种
fromat 自定义 FORMAT(GETDATE(),'yyyy/MM/dd') 想什么格式就转什么格式
三:比较相关
部分:
一般用于看当前时间的年 或 日 datepart (yyyy,getdate()) --2020
datepart (DAYOFYEAR,getdate()) --这个是当前年份过了多少天了
YEAR函数 是 获取年
YEAR(date) --2020
数据库比较 找到当前时间相同的 年份 或者月份等 DATEPART DateName
DATEPART(YY,CreateTime)=DateName(year,GetDate())
比较:
JS:
var endTime = new Date(retDate).getTime() / 1000 - parseInt(new Date(depDate).getTime() / 1000);
Days = parseInt(endTime / 60 / 60 / 24)+1; //相差天数
C#:
获取当年1月1号 12月31号
new DateTime(DateTime.Now.Year, 1, 1)
new DateTime(DateTime.Now.Year, 12, 31)
获取俩个日期的查 秒数
(int)(DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds;
获取俩个日期的 差值天数
DateTime dt1 = DateTime.Now;
DateTime dt2 = DateTime.Parse("2013-5-30 14:20:45");
TimeSpan ts = dt1 - dt2;
int days=ts.days;
数据库:
数据库更新 某列日期变动 DATEADD 添加
UPDATE 表名 SET h_date = DATEADD(mi,3,h_date)
数据库比较俩个日期
DATEDIFF(YEAR,@birthDay,GETDATE())=0