关于在delphi中时间日期的转换问题,高手进
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在delphi中时间日期的转换问题,高手进相关的知识,希望对你有一定的参考价值。
比如我现在获取到一个时间类型为string的字符串为
August 16, 2010 15:00
请问如何能转换为datetime格式且只保留年份和月份及日期??我试过用strtodate不行,formatdatetime好像也不行,请教高手是否delphi中有其他更加方便的函数进行转换呢?
2、使用正则表达式进行匹配,取匹配部分进行组合成需要的日期即可
或者
将你的电脑设置成英文区域,并将日期格式设置成英文,可以使用这种形式直接获取
procedure testDate;
var
myDateTime : TDateTime;
fmt:TFormatSettings;
begin
fmt.ShortDateFormat:='mmmm dd yyyy';
myDateTime := StrToDateTime('August 16 2010 15:00');
Writeln('August 16, 2010 15:00 = ',DateTimeToStr(myDateTime));
end; 参考技术B 貌似没有认识这种格式可以直接转化的函数。既然格式已经固定了,你可以按照一定的规则截取字符串并去处理它,得到你想要的年、月、日,再拼起来就OK了。方法比较笨,有好的方法再告诉你 参考技术C var DD : TDateTime ;
begin
DD := Trunc(Date);
ShowMessage(DateTimeToStr(DD));
end; 参考技术D 按照一定的规则截取字符串并去处理它
MySQL中时间日期的问题
在项目开发中,往往会遇到时间日期的存储,而涉及到MySQL数据库,其中包含一些需要注意的点。
目录
时间日期类型建议使用date储存
在开发中,有部分人会使用字符串的格式来存储时间日期,但从其数据类型大小来看,date所占用的字节数要少于varchar类型,并且对于一些需要使用操作时间日期的函数是无法使用的。对于日期参数使用date类型,或者需要时间日期,则使用Datetime。
DateTime和Timestamp的区别
这两种都属于MySQL的时间日期存储类型,其都可表示YYYY-MM-DD HH:MM:SS类型的时间。但两者之间还是有区别的。
时区信息
DateTime类型负责保存当前会话设置的时区所对应的时间,一旦所存储数据的数据库修改了时区,读取出来的参数时不正确的。
而Timestamp储存日期后,每次访问时会按照当前数据库的时区进行相关的计算。因此,针对与不同的时区读取出来的值是不同的。
下面通过数据库数据进行演示。
数据库表创建语句:
create table time_test(
id int primary key auto_increment,
date_time datetime not null,
time_stamp timestamp not null
);
添加测试数据:
insert into time_test (date_time, time_stamp) VALUES (now(), now());
查看数据库表数据:
select * from time_test;
结果如下:
+----+---------------------+---------------------+
| id | date_time | time_stamp |
+----+---------------------+---------------------+
| 1 | 2021-07-10 20:39:01 | 2021-07-10 20:39:01 |
+----+---------------------+---------------------+
现在对数据库时区进行修改:
set time_zone = '+0:00';
再次对数据库表数据进行查询:
+----+---------------------+---------------------+
| id | date_time | time_stamp |
+----+---------------------+---------------------+
| 1 | 2021-07-10 20:39:01 | 2021-07-10 12:39:01 |
+----+---------------------+---------------------+
从结果中可以看到,DateTime类型的值不会根据数据库时区的变化而变化,而Timestamp会根据当前时区对数据进行更新修改。
存储空间
DateTime使用8个字节存储数据,并以实际格式为数据储存格式,其数据存储范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。
Timestamp使用4个字节存储数据,并以UTC(Universal Time Coordinated,协调世界时)为数据储存格式,其数据存储范围是1970-01-01 00:00:01 ~ 2037-12-31 23:59:59。
从存储数据的范围可以看出DateTime能够表示的时间范围更大。
使用时间戳存储时间
使用数值类型对时间日期进行储存,例如int,bigint。通过UNIX_TIMESTAMP函数将Timestamp类型的值进行转换。
使用时间戳来存储时间的优势是便于日期的排序及比较,并且效率更高。缺点是转换后的数据不易查看。
时间戳语句如下:
select UNIX_TIMESTAMP(now());
其结果为:
+-----------------------+
| UNIX_TIMESTAMP(now()) |
+-----------------------+
| 1625925300 |
+-----------------------+
以上是关于关于在delphi中时间日期的转换问题,高手进的主要内容,如果未能解决你的问题,请参考以下文章