关于DateTime的自定义转换
关于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的自定义转换的更多相关文章
- 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换
[源码下载] 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换 作者:webabcd 介 ...
- 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换
介绍背水一战 Windows 10 之 绑定 DataContextChanged - FrameworkElement 的 DataContext 发生变化时触发的事件 UpdateSourceTr ...
- 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 ...
- System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...
- sql server报【从varchar数据类型到datetime数据类型的转换产生一个超出范围的值】错误的解决办法
产生这个错误的原因是在使用convert函数将给定的日期字符串转换为日期类型的时候,因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误. 如果类型是[datetime ...
- 5、flink常见函数使用及自定义转换函数
代码地址:https://gitee.com/nltxwz_xxd/abc_bigdata 一.flink编程方法 获取执行环境(execution environment) 加载/创建初始数据集 对 ...
- Spring自定义转换类,让@Value更方便
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 关于配置的文章已经写了很多,相信看过的人还是会有一定收获的,系列文章可阅读:南瓜慢说-配置相关文章.对于@Val ...
- 把excel的数据导入到SQLSERVER里面,excel的字符串时间在导入sql库显示datetime 数据类型的转换产生一个超出范围的值
这是我Excel导入的数据,准备把这个varchar(50)时间导入我的userInfo表中的出生日期字段datatime,如果你的数据正常,是可以导入的, 但是有些日期可能超出datatime的最大 ...
- Nullable<System.DateTime>日期格式转换 (转载)
一.问题 1.html页面中时间显示出错,数据库中时间是正确的. 原因:没有把DateTime转成String类型. 2. 在C#中,发现不能直接使用ToString("yyyy-MM-d ...
- python time和datetime的常用转换处理
一.time 1.获取当前时间和时区 >>> now = time.time() # 当前时间 float类型 >>> time.strftime("%Y ...
随机推荐
- 编写kickstart脚本,执行时遇到的问题
KickStart脚本 #!/bin/bash #declare var yum_ins="yum -y install" sys_res="systemctl rest ...
- Linux编译安装MySQL__5.7.26记录
系统:centos7.4(3.10内核) 1.查找并清除自带的数据库# rpm -qa | grep mariadb# rpm -e --nodeps mariadb-libs-5.5.44-2.el ...
- day02 计算机组成
day02 计算机组成 1.硬件 计算机硬件是指一些物理装置按照系统结构的要求构成一个有机整体为计算机软件运行提供物质基础 构成最基础的硬件有: CPU 内存 主板 IO设备 2.软件 计算机软件可以 ...
- zz Spring 是一种反模式
Java 将会消亡 – Martin Vysny – 第一性原理思考 原文标题"Java 将会消亡", 我并不认可 Java 会消亡一说, 作者还处于 FP 亢奋期,而我已经从 F ...
- 【C#】【平时作业】习题-7-继承、抽象与多态
相关概念 什么是继承 继承定义了如何根据现有类创先新类的过程 任何类都可以从另外一个类继承 一个派生出来的子类具有这个类的所有公共属性和方法 类的继承机制 创建新类所根据的基础类称为基类或父类,新建的 ...
- 解决编译redis报错zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
编译redis时报错:zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory,执行: # sudo m ...
- 把 Windows 装进 Docker 容器里
本篇文章聊聊如何在 Docker 里运行 Windows 操作系统, Windows in Docker Container(WinD). 写在前面 我日常使用 macOS 和 Ubuntu 来学习和 ...
- 解决SSH免密登录配置成功后不生效问题
今天配置SSH免密登录时,使用 ssh-keygen 命令成功生成了公钥和私钥,并且也执行了 ssh-copy-id 机器地址 将公钥添加到了服务器的authorized_keys文件中.紧接着用 s ...
- Spring Boot 2.4 中文
Spring Boot 2.4 中文 https://runebook.dev/zh-CN/docs/spring_boot/spring-boot-features
- 综述😋Security and Privacy Challenges of ✌Large Language Models A Survey