关于DateTime的自定义转换。把字符串时间转换成可以供DateTime类型识别的字符串类型的粗略实现。

    /// <summary>
/// 把从数据库中读取的字符串的CurrentTime数据转换成可以被DateTime类型识别的格式
/// 可识别的格式如: 2009-06-15T13:45:30.6175425 -> 6175425
/// </summary>
public class CustomDateTimeConverter
{
public CustomDateTimeConverter() { }
//实现在时分秒间插入“:”
public string TimeStringConverter(string s)
{
string s2 = InsertChar(s, 3, ':');
string s3 = InsertChar(s2, 1, ':');
return s3;
}
//在第m+1个位置后插入一个字符c
// if s.length < m, insert into the end ?????
public string InsertChar(string s, int m, char c)
{
if (s.Length <= m) return s + c;
else return s.Insert(m + 1, new string(c, 1)); //int length = s.Length;
//length = length + 1;
//char[] temp = new char[length];
//for (int i = length - 1; i > m; i--)
//{
// temp[i] = s.ToArray()[i - 1];
//}
//temp[m + 1] = c;
//for (int i = 0; i <= m; i++)
//{
// temp[i] = s.ToArray()[i];
//}
//s = new string(temp);
//return s;
} public string DateStringConverter(string s)
{
string s1= InsertChar(s, 5, '-');
string s2 = InsertChar(s1, 3, '-');
return s2;
} /* Get sub string. */
private static string subString(string s, int index, int len)
{
if (s.Length <= index) return string.Empty;
else if (s.Length <= (index + len)) return s.Substring(index);
else return s.Substring(index, len);
} /* Parse a string into the int value with min and max. */
private static int toInt(string s, int min, int max)
{
int tmp;
int.TryParse(s, out tmp); if (tmp < min) tmp = min;
else if (tmp > max) tmp = max; return tmp;
} /* Try to parse date(YYYYMMDD) and time(HHMMSS.MMM) into DateTime.
*
* return default value if input a invalid parameter.
* */
public static DateTime TryToDateTime(string date, string time)
{
DateTime min = DateTime.MinValue;
DateTime max = DateTime.MaxValue; // year
int index = 0;
int year = toInt(subString(date, index, 4), min.Year, max.Year);
// month
index += 4;
int month = toInt(subString(date, index, 2), min.Month, max.Month);
// day
index += 2;
int day = toInt(subString(date, index, 2), min.Day, max.Day);
// hour
index = 0;
int hour = toInt(subString(time, index, 2), min.Hour, max.Hour);
// minute
index += 2;
int minute = toInt(subString(time, index, 2), min.Minute, max.Minute);
// second
index += 2;
int second = toInt(subString(time, index, 2), min.Second, max.Second);
// millisecond
index += 3;
int millisecond = toInt(subString(time, index, 3), min.Millisecond, max.Millisecond); return new DateTime(year, month, day, hour, minute, second, millisecond);
}
}

关于DateTime的自定义转换的更多相关文章

  1. 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换

    [源码下载] 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换 作者:webabcd 介 ...

  2. 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换

    介绍背水一战 Windows 10 之 绑定 DataContextChanged - FrameworkElement 的 DataContext 发生变化时触发的事件 UpdateSourceTr ...

  3. C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)

    C# MVC 用户登录状态判断   来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...

  4. System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...

  5. sql server报【从varchar数据类型到datetime数据类型的转换产生一个超出范围的值】错误的解决办法

    产生这个错误的原因是在使用convert函数将给定的日期字符串转换为日期类型的时候,因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误. 如果类型是[datetime ...

  6. 5、flink常见函数使用及自定义转换函数

    代码地址:https://gitee.com/nltxwz_xxd/abc_bigdata 一.flink编程方法 获取执行环境(execution environment) 加载/创建初始数据集 对 ...

  7. Spring自定义转换类,让@Value更方便

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 关于配置的文章已经写了很多,相信看过的人还是会有一定收获的,系列文章可阅读:南瓜慢说-配置相关文章.对于@Val ...

  8. 把excel的数据导入到SQLSERVER里面,excel的字符串时间在导入sql库显示datetime 数据类型的转换产生一个超出范围的值

    这是我Excel导入的数据,准备把这个varchar(50)时间导入我的userInfo表中的出生日期字段datatime,如果你的数据正常,是可以导入的, 但是有些日期可能超出datatime的最大 ...

  9. Nullable<System.DateTime>日期格式转换 (转载)

    一.问题 1.html页面中时间显示出错,数据库中时间是正确的. 原因:没有把DateTime转成String类型. 2.  在C#中,发现不能直接使用ToString("yyyy-MM-d ...

  10. python time和datetime的常用转换处理

    一.time 1.获取当前时间和时区 >>> now = time.time() # 当前时间 float类型 >>> time.strftime("%Y ...

随机推荐

  1. pdf.js 笔记

    1.介绍 官方文档,pdf.js是由mozilla开源的js库,用于在web环境中渲染和显示pdf文档 目前,绝大多数PC浏览器都已经内置了pdf阅读器,能够直接预览pdf文件(内置了pdf.js), ...

  2. Net中RabbitMq.Client7.0通过依赖注入DI来管理RabbitMQ客户端的生命周期

    在 RabbitMQ.Client 7.0.0 版本中, IModel 在 RabbitMQ.Client 7.0.0-alpha2 版本中已经被重命名,现在应该使用 IChannel 替代 IMod ...

  3. 不求甚解--详解ansible-playbook中roles的用法(二)

    前言 本文将详细介绍ansible-playbook中roles的各种用法 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS ansible 2.17.6 基本用法 文件结构 . ...

  4. Vue3 面试题 (2023-09-26更新)

    Vue3 对比 Vue2 做了那些改进? 1. 响应式系统 vue2 中使用的 Object.defineProperty 实现的响应式,劫持整个对象,递归遍历所有属性,给每个属性添加 getter ...

  5. TypeScript 总结

    js 类型分为两种:基本数据类型和复杂数据类型 基本数据类型主要有:number.string.boolean.null.undefined.symbo(es6新增).BigInt(es10新增) t ...

  6. DSB的数字正交解调

    1.DSB调制过程 ​ DSB信号是一种双边带调幅调制信号,又叫双边带调幅,通过改变载波的振幅来实现基带数据的传输. 其函数表达式如下: \[s(t) = m(t)*cos(2\pi ft + \va ...

  7. IDE提交Git出现husky>pre-commit错误

    若使用IDE提交Git出现以下错误: 则是ES6在提交校验过程中出现了问题,强制提交方式为: 命令行: git commit --no-verify IDEA: 在提交时取消勾选Run Git hoo ...

  8. Qt开源作品22-运行时间记录类

    一.前言 在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信 ...

  9. Qt音视频开发2-vlc回调处理

    一.前言 用句柄来显示视频,方便是很方便,但是有个缺点就是不能拿到实时视频的每张图片的数据,这个就比较讨厌,大部分的监控行业的应用,除了截图以外,很可能需要拿到图片自己做一些处理的,而且拿到图片自己绘 ...

  10. 15条 Karpenter 最佳实践,轻松掌握弹性伸缩

    Karpenter 是一款高性能.灵活的开源 Kubernetes 集群自动扩展工具,目前已支持 AWS 和阿里云.它可以根据不断变化的应用负载,快速启动大小合适的计算资源,进而提升应用的可用性. 相 ...