针对时间的多种转换方式

不负遇见。。。 2019-06-28 08:13:36
下面我给大家讲一下时间的转换。我相信大家都应该清楚,作为一个编程人员,你所接触的项目大多数的情况下它都和时间有所关系,也要和时间打交道,但是时间存储和查询出来的格式未必是正规的。这时候很多人都想着在查询时间那里通过tostring 来转换。但是这种作法是会报错的。因为你在数据库给时间数据类型
位DataTime 类型。Datatime类型的数据类型是不会让你直接tostring就完结了事的。
下面,请大家看下面的时间格式。这种就是从数据库查询的时间格式所显示的字段,但是这种时间数据格式并非是我们正规看到时间。这种事件格式也看不出来具体的时间。
如图:

所有查询出来的时间必须要进行转换才可以,时间一般是以日期或者具体的时间显示,这是最常见的。
既然要转换他们的时间,那首先你就要认识一下时间的数据类型在数据库映射过来来会成什么样的字段
数据库的存储 变化为
Date DateTime
dateTime DateTime
timeStamp TimeSpan
Time TimeSpan
对应时间的转换的方法我目前所接触的的方法有两种
One : 在JS 里转
Two: 在控制器转
我个人比较喜欢在控制器的查询出来就直接转。当然在这里我会把我接触过的都会列出来。
一、 在JS里面转
这下面是一个表格渲染里面的基础参数
tabStudent = layuiTable.render({
cols: [[ //表头
{ templet: setBirthday, title: '出生日期', },

//{ field: 'Birthday', title: '出生日期', },
]],
//页面处理时间 生日 data - datatime 类型
// /Date(929462400000)/
function setBirthday(data) {
var Birthday = data.Birthday;
return ChangeDateFormat(Birthday, false);
}

function ChangeDateFormat(jsondate, isDateTime) {
//”Date(", "") = Date (929462400000) replace(")/", ""= /
jsondate = jsondate.replace("/Date(", "").replace(")/", ""); // 929462400000 这句代码就把data与后面的 / 替换掉了
再去把它转换为日期类型:
// Date JQ知识 为什么+1 西方为0 到11 中国为 1 -12 所有代码就要加上1
var date = new Date(parseInt(jsondate, 10)); //转成日期类型 转成整形的单词parseInt 年
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;//月
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();//天
//< 10 小于 10 加0 在前面
在拼接字符串:
var str = date.getFullYear() + "-" + month + "-" + currentDate;
这个主要用来返回年月日与时分秒的数据
if (isDateTime != null && isDateTime != undefined && isDateTime == true) {
var hours = date.getHours() > 9 ? date.getHours() : "0" + date.getHours();
var minutes = date.getMinutes() > 9 ? date.getMinutes() : "0" + date.getMinutes();
var seconds = date.getSeconds() > 9 ? date.getSeconds() : "0" + date.getSeconds();

str = str + " " + hours + ":" + minutes + ":" + seconds;
}
return str;
}
这里我只对其中的一个日期 进行转换进行,进行转化后的日期就变成跟我们的一样了。

二、 在控制器转
三、 //Birthday DateTime
这个是控制器里面键了一个实体类,对实体类的数据类型进行编译
public string StrBirthday {get,set } 这种是我们建立实体类的作法。但是这种作法一般是无法返回时间的。
public class StudentVo:Student
{
private string _StrBirthday; // 私有
public string StrBirthday
{
get { return _StrBirthday; }
set
{
//value 代表在控制器给他赋的值 Convert字符串 转为 DateTime
DateTime dt = Convert.ToDateTime(value);
_StrBirthday = dt.ToString("yyyy-MM-dd");
// ("yyyy-MM-dd HH:mm:ss ")}
经过这样的转换,在查询出来,数据格式就是正常的了,下面一行的代码就是在控制器查询出来的代码
StrBirthday = tbStudent.Birthday.ToString(),
通过上面的方法你都可以把时间间进行转换。
不过我个人并没有这样转,我是在控制器查询出来就直接转了。这样会更加快速直接。
这个是我通过查询出来就直接进行转换出来的时间格式。

控制器代码部分,这里我也封装了一个实体类。来进行接收。再去运用Convert 去转换,这样同样可以转换出时间。
begintime = Convert.ToDateTime(tbFestivalSet.StartTime).ToString("yyyy-MM-dd"),
endtime = Convert.ToDateTime(tbFestivalSet.EndTime).ToString("yyyy-MM-dd")
但是这个有一点需要注意的就是,对与多表联查的数据直接这样转会无法转换。这时候我们要在我们查询的表的后面添加多一个Tolist(),这样就可以了。具体原因好像是数据SQL语句在对LQ语句查询的时候无法识别。
我也不知道是否这样,因为这个是在我无意间接触到的。正确原因解析我也不可能没办法讲这么清楚。请谅解。

以上这些就是我在做项目的时候经常用来转换时间的方法转换。希望这些时间的转换会对你有所帮助,不足之处请多多包涵!!!

...全文
56 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

488

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧