pythonpython str timestampp 判断日期是不是同一天

Python2中生成时间戳(Epoch,或Timestamp)的常见误区
来源:博客园
在Python2中 datetime 对象没有 timestamp 方法,不能很方便的生成 epoch ,现有方法没有处理很容易导致错误。关于 Epoch 可以参见 时区与Epoch 0 Python中生成Epoch from datetime import datetime # python3 datetime.now().timestamp() # python2 import timetime.mktime(datetime.now().timetuple()) 1 错误代码 from datetime import datetime import pytzaware_date = datetime.utcnow().replace(tzinfo = pytz.utc)time.mktime(aware_date.timetuple()) # bug here 2 原因 Python中的 datetime 对象分为带时区信息和不带时区信息的两种对象即 naive 和 aware 对象。在处理 naive 时,一切皆默认为系统时区,没有任何问题。 在Python3中执行 timestamp 时对于naive对象,按照默认时区处理(调用time.mktime),而aware对象,则带上时区计算与UTC基准时间的间隔秒数得到,也就是将时区信息考虑在内。 而Python2和3中的 timetuple 方法,返回的结果没有包含时区信息,也没有进行时区转换。即调用 timetuple 对于aware日期对象而言,时区信息被丢弃,因此再调用time.mktime将得到一个错误的结果 3 解决办法 方法一:将其他时区的aware日期,转换为当前系统默认的时区的aware对象, 由于与系统时区一致,因此该aware对象与无时区的naive对象执行 timetuple 的效果一样。 转换时区参见 timezone ,即调用 astimezone 方法,参数为转换后的时区(tzinfo实例) 由于Python2中缺失 tzinfo ( 抽象基类 )的各个时区实例,需要自己构造时区对象。 时区实例可以参考官方文档的实现 datetime 或使用推荐的第三方库 pytz 方法二:计算时间差 _EPOCH = datetime( 1970 , 1 , 1 , tzinfo = pytz.utc) # 第三方库 pytz (aware_date - _EPOCH).total_seconds()
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动python 如何判断两个时间是否在同一个5分钟时段内? - 知乎2被浏览853分享邀请回答In [43]: time_list = ['09:56:00', '09:59:59', '10:00:00', '10:01:01', '10:06:00']
In [44]: for t in time_list:
timestamp = time.mktime(time.strptime(' %s' % t, "%Y-%m-%d %H:%M:%S"))
print('%s\t%s' % (t, int(timestamp)/300))
09:56:00 4838711
09:59:59 4838711
10:00:00 4838712
10:01:01 4838712
10:06:00 4838713
11 条评论分享收藏感谢收起转:http://blog.chinaunix.net/uid--id-65900.html
主要写一些与连接时的日期处理,pstmt.setDate()的类型是java.sql.Date类型,这种符合规范的类型其实并没有把时分秒存进库,所以存取时就应该用setTimestamp()或getTimestamp()。
java.sql.Date 只存储日期数据不存储时间数据&
// 会丢失时间数据
preparedStatement.setDate(1, new java.sql.Date(date.getTime()));&
//可以这样来处理&
preparedStatement.setTimestamp(1, new Timestamp(new java.util.Date().getTime()));&
//想要得到完整的数据,包括日期和时间,可以这样&
java.util.Date d = resultSet.getTimestamp(1);&
//这样处理更合适一些,可以避免一些潜在Timestamp 问题&
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());&
& &往数据库存储的时候可以接收 java.util.Date类型 再用getTime()方法得到代表那个Date的long值,再以这个long值构造一个Timestamp对象
存进数据库中。&
& && & 从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个 java.util.Date对象,这样就可以对这个Date对象操作了。比如说 new SimpleDateFormat(&yyyyy-MM-dd HH:mm:ss&).format(Date)或format(Timestamp)都行~&
用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式。&
String转化为Timestamp:&
SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);
//定义格式,不显示毫秒&
Timestamp now = new Timestamp(System.currentTimeMillis());
//获取当前时间&
String str = df.format(now);& && && &
String转化为Timestamp:&
SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-ddHH:mm:ss&);
String time = df.format(new Date());&
Timestamp ts = Timestamp.valueOf(time);& &&&
在 ResultSet中我们经常使用的setDate或getDate的数据类型是java.sql.Date,而在平时java中我们一般习惯使用
java.util.Date。因此在DAO层我们经常会碰到这俩种数据类型的相互转换。
两者的关系
java.lang.Object
& & +---java.util.Date
& && && && &|
& && && && &+----java.sql.Date&
1. 使用getTime()
这两个类都提供了getTime()函数,用于返回对应的毫秒数(long类型)。利用这个函数可以实现转换:
& & java.util.Date utilDate = new java.util.Date(sqlDate.getTime());& &// sql -& util
& & java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());& &// util -& sql
2. 使用SimpleDateFormat类实现转换
SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -& text)、语法分析 (text -& date)和标准化。
SimpleDateFormat dateFormat = new SimpleDateFormate(&yyyy-MM-dd HH:mm:ss&);
java.util.Date utilDate = dateFormat.parse(sqlDate.toString());
3. 直接转换
由于java.sql.Date是从java.util.Date中继承过来的,所以可以直接用:
utilDate = sqlD
4. 另类获得日期的方法:
SimpleDateFormat sy=new SimpleDateFormat(&yyyy&);
SimpleDateFormat sm=new SimpleDateFormat(&MM&);
SimpleDateFormat sd=new SimpleDateFormat(&dd&);
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);
ps:1. java.util.Date类中的getYear()要加上1900才可得到实际值,getMonth()则要加上1。
& && &&&2.&串到Date的转换:
Date.valueOf(str),记得引包的时候要引sql的Date包,不是util的Date包
& && &&&3. 字符串到Timestamp 的转换Timestamp ts = Timestamp.valueOf(time);
本文已收录于以下专栏:
相关文章推荐
TYPE_TIMESTAMP &
to_timestamp(' 00:00:0.',
'yyyy-mm-dd hh24:mi:ss.ff9')
Timestamp createTime = seg.getCreateTime();
Date createDate = new Date();
Date nowDate = new Date(...
2个timestamp类型的数据不能直接用&
可以用下面的方法比较var timestamp1;
var timestamp2;
if( timestamp1.getTime() & timesta...
一.存储日期的字段为日期类型MySql(Date、DateTime、TimeStamp等):
方法一:直接比较
select * from test where create_time betwe...
from:http://lhdeyx./blog/static//
from:http://blog.csdn.net/zht...
转载:http://bbs.csdn.net/topics/
现在有两个TimeStamp格式的时间,一个是当前时间,另外一个是客户上次订单时间,如何进行比较?
 //获取系统当...
不能用两个字符串比较的小的方法来做。例如:‘’ & ‘’正解:都是  ,   后面的时间- 前面的时间mysqlselect count(*) from tab...
JAVA获得当前时间的几种方法
一. 获取当前系统时间和日期并格式化输出:
import java.util.D
import java.text.SimpleD...
来源:.cn/s/blog_6560efcz.html
ava获取取得Timestamp类型的当前系统时间
java获取取得Timestamp...
使用模板的要点:
    页面主体结构固定,具体参数可变,尽可能让参数动态化,才能提高模板的复用性
=================================================...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)17:55 提问
知道一个Timestamp日期,怎么查询这一天的数据? 数据库中存储类型也是Timestamp格式。
知道一个Timestamp日期,怎么查询这一天的数据? 数据库中存储类型也是Timestamp格式。可以使用离线查询吗?
按赞数排序
可以使用离线查询
通过后台拼凑出 一天的开始时间也就是年月日 0时0分0秒 在拼凑出当天你的结束时间 年月日 23时59分59秒 通过离线查询中的between and 就可以实现
你可以在后台自己根据这个时间构造出今天的开始时间和结束时间 查询这个时间段的不就是今天的
使用hibernte的话直接传入当前的日期对象
jdbc的话,拼接yyyy-MM-dd查询
其他相关推荐&& &Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容易调用。今天就来讲讲datetime模块。
&& &datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小、最大年份。其中,MINYEAR = 1,MAXYEAR = 9999。(对于偶等玩家,这个范围已经足够用矣~~)
&& &datetime模块定义了下面这几个类:
datetime.date:表示日期的类。常用的属性有year, month, day;
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
datetime.datetime:表示日期时间。
datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
&& &注&:上面这些类型的对象都是不可变(immutable)的。
&& &下面详细介绍这些类的使用方式。
&& &date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:
&& &class datetime.date(year, month, day):参数的意义就不多作解释了,只是有几点要注意一下:
year的范围是[MINYEAR, MAXYEAR],即[1, 9999];
month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~);
day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;
&& &date类定义了一些常用的类方法与类属性,方便我们操作:
date.max、date.min:date对象所能表示的最大、最小日期;
date.resolution:date对象表示日期的最小单位。这里是天。
date.today():返回一个表示当前本地日期的date对象;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar&:一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)
&& &使用例子:
from&&datetime&&import&&*&&
import&&time&&
print&&&'date.max:'&,&date.max&&
print&&&'date.min:'&,&date.min&&
print&&&'date.today():'&,&date.today()&&
print&&&'date.fromtimestamp():'&,&date.fromtimestamp(time.time())&&
Python代码&&
from&datetime&import&*&&
import&time&&
print&'date.max:',&date.max&&
print&'date.min:',&date.min&&
print&'date.today():',&date.today()&&
print&'date.fromtimestamp():',&date.fromtimestamp(time.time())&&
&& &date提供的实例方法和属性:
date.year、date.month、date.day:年、月、日;
date.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
date.timetuple():返回日期对应的time.struct_time对象;
date.toordinal():返回日期对应的Gregorian Calendar日期;
date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
date.isocalendar():返回格式如(year,month,day)的元组;
date.isoformat():返回格式如'YYYY-MM-DD&的字符串;
date.strftime(fmt):自定义格式化字符串。在下面详细讲解。
&& &使用例子:
now&=&date(&2010&,&&04&,&&06&)&&
tomorrow&=&now.replace(day&=&07&)&&
print&&&'now:'&,&now,&&',&tomorrow:'&,&tomorrow&&
print&&&'timetuple():'&,&now.timetuple()&&
print&&&'weekday():'&,&now.weekday()&&
print&&&'isoweekday():'&,&now.isoweekday()&&
print&&&'isocalendar():'&,&now.isocalendar()&&
print&&&'isoformat():'&,&now.isoformat()&&
Python代码&&
now&=&date(2010,&04,&06)&&
tomorrow&=&now.replace(day&=&07)&&
print&'now:',&now,&',&tomorrow:',&tomorrow&&
print&'timetuple():',&now.timetuple()&&
print&'weekday():',&now.weekday()&&
print&'isoweekday():',&now.isoweekday()&&
print&'isocalendar():',&now.isocalendar()&&
print&'isoformat():',&now.isoformat()&&
&& &date还对某些操作进行了重载,它允许我们对日期进行如下一些操作:
date2 = date1 + timedelta &# 日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)
date2 = date1 - timedelta & # 日期隔去间隔,返回一个新的日期对象
timedelta = date1 - date2 & # 两个日期相减,返回一个时间间隔对象
date1 & date2 &# 两个日期进行比较
&&&&注:&对日期进行操作时,要防止日期超出它所能表示的范围。
&& &使用例子:
now&=&date.today()&&
tomorrow&=&now.replace(day&=&7&)&&
delta&=&tomorrow&-&now&&
print&&&'now:'&,&now,&&'&tomorrow:'&,&tomorrow&&
print&&&'timedelta:'&,&delta&&
print&&now&+&delta&&
print&&tomorrow&&&now&&
Python代码&&
now&=&date.today()&&
tomorrow&=&now.replace(day&=&7)&&
delta&=&tomorrow&-&now&&
print&'now:',&now,&'&tomorrow:',&tomorrow&&
print&'timedelta:',&delta&&
print&now&+&delta&&
print&tomorrow&&&now&&
&& &time类表示时间,由时、分、秒以及微秒组成。(我不是从火星来的~~)time类的构造函数如下:
&& &class datetime.time(hour[&, minute[&, second[&, microsecond[&, tzinfo]&]&]&]&) :各参数的意义不作解释,这里留意一下参数tzinfo,它表示时区信息。注意一下各参数的取值范围:hour的范围为[0, 24),minute的范围为[0, 60),second的范围为[0, 60),microsecond的范围为[0, 1000000)。
&& &time类定义的类属性:
time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);
time.resolution:时间的最小单位,这里是1微秒;
&& &time类提供的实例方法和属性:
time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒;
time.tzinfo:时区信息;
time.replace([&hour[&, minute[&, second[&, microsecond[&, tzinfo]&]&]&]&]&):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);
time.isoformat():返回型如"HH:MM:SS"格式的字符串表示;
time.strftime(fmt):返回自定义格式化字符串。在下面详细介绍;
使用例子:
from&&datetime&&import&&*&&
tm&=&time(23&,&&46&,&&10&)&&
print&&&'tm:'&,&tm&&
print&&&'hour:&%d,&minute:&%d,&second:&%d,&microsecond:&%d'&&\&&
&&&&&&&&%&(tm.hour,&tm.minute,&tm.second,&tm.microsecond)&&
tm1&=&tm.replace(hour&=&20&)&&
print&&&'tm1:'&,&tm1&&
print&&&'isoformat():'&,&tm.isoformat()&&
Python代码&&
from&datetime&import&*&&
tm&=&time(23,&46,&10)&&
print&'tm:',&tm&&
print&'hour:&%d,&minute:&%d,&second:&%d,&microsecond:&%d'&\&&
&&&&&&&&%&(tm.hour,&tm.minute,&tm.second,&tm.microsecond)&&
tm1&=&tm.replace(hour&=&20)&&
print&'tm1:',&tm1&&
print&'isoformat():',&tm.isoformat()&&
&& &像date一样,也可以对两个time对象进行比较,或者相减返回一个时间间隔对象。这里就不提供例子了。
datetime类
&& &datetime是date与time的结合体,包括date与time的所有信息。它的构造函数如下:datetime.datetime&(year, month, day[&, hour[&, minute[&, second[&, microsecond[&, tzinfo]&]&]&]&]&),各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。
&& &datetime类定义的类属性与方法:
datetime.min、datetime.max:datetime所能表示的最小值与最大值;
datetime.resolution:datetime最小单位;
datetime.today():返回一个表示当前本地时间的datetime对象;
datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow():返回一个当前utc时间的datetime对象;
datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
<bine(date, time):根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
使用例子:
from&&datetime&&import&&*&&
import&&time&&
print&&&'datetime.max:'&,&datetime.max&&
print&&&'datetime.min:'&,&datetime.min&&
print&&&'datetime.resolution:'&,&datetime.resolution&&
print&&&'today():'&,&datetime.today()&&
print&&&'now():'&,&datetime.now()&&
print&&&'utcnow():'&,&datetime.utcnow()&&
print&&&'fromtimestamp(tmstmp):'&,&datetime.fromtimestamp(time.time())&&
print&&&'utcfromtimestamp(tmstmp):'&,&datetime.utcfromtimestamp(time.time())&&
Python代码&&
from&datetime&import&*&&
import&time&&
print&'datetime.max:',&datetime.max&&
print&'datetime.min:',&datetime.min&&
print&'datetime.resolution:',&datetime.resolution&&
print&'today():',&datetime.today()&&
print&'now():',&datetime.now()&&
print&'utcnow():',&datetime.utcnow()&&
print&'fromtimestamp(tmstmp):',&datetime.fromtimestamp(time.time())&&
print&'utcfromtimestamp(tmstmp):',&datetime.utcfromtimestamp(time.time())&&
&& &datetime类提供的实例方法与属性(很多属性或方法在date和time中已经出现过,在此有类似的意义,这里只罗列这些方法名,具体含义不再逐个展开介绍,可以参考上文对date与time类的讲解。):
datetime.year、month、day、hour、minute、second、microsecond、tzinfo:
datetime.date():获取date对象;
datetime.time():获取time对象;
datetime.&replace&([&year[&, month[&, day[&, hour[&, minute[&, second[&, microsecond[&, tzinfo]&]&]&]&]&]&]&]):
datetime.&timetuple&()
datetime.&utctimetuple&()
datetime.&toordinal&()
datetime.&weekday&()
datetime.&isocalendar&()
datetime.&isoformat&([&sep]&)
datetime.&ctime&():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
datetime.&strftime&(format)
&& &像date一样,也可以对两个datetime对象进行比较,或者相减返回一个时间间隔对象,或者日期时间加上一个间隔返回一个新的日期时间对象。这里不提供详细的例子,看客自己动手试一下~~
格式字符串
&& &datetime、date、time都提供了strftime()方法,该方法接收一个格式字符串,输出日期时间的字符串表示。下表是从python手册中拉过来的,我对些进行了简单的翻译(翻译的有点噢口~~)。
格式字符 &意义
%a&星期的简写。如 星期三为Web%A&星期的全写。如 星期三为Wednesday%b&月份的简写。如4月份为Apr%B月份的全写。如4月份为April&%c:&&日期时间的字符串表示。(如:&04/07/10 10:43:39)%d:&&日在这个月中的天数(是这个月的第几天)%f:&&微秒(范围[0,999999])%H:&&小时(24小时制,[0, 23])%I:&&小时(12小时制,[0, 11])%j:&&日在年中的天数 [001,366](是当年的第几天)%m:&&月份([01,12])%M:&&分钟([00,59])%p:&&AM或者PM%S:&&秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)%U:&&周在当年的周数当年的第几周),星期天作为周的第一天%w:&&今天在这周的天数,范围为[0, 6],6表示星期天%W:&&周在当年的周数(是当年的第几周),星期一作为周的第一天%x:&&日期字符串(如:04/07/10)%X:&&时间字符串(如:10:43:39)%y:&&2个数字表示的年份%Y:&&4个数字表示的年份%z:&&与utc时间的间隔 (如果是本地时间,返回空字符串)%Z:&&时区名称(如果是本地时间,返回空字符串)%%:&&%% =& %
dt&=&datetime.now()&&
print&&&'(%Y-%m-%d&%H:%M:%S&%f):&'&,&dt.strftime(&'%Y-%m-%d&%H:%M:%S&%f'&)&&
print&&&'(%Y-%m-%d&%H:%M:%S&%p):&'&,&dt.strftime(&'%y-%m-%d&%I:%M:%S&%p'&)&&
print&&&'%%a:&%s&'&&%&dt.strftime(&'%a'&)&&
print&&&'%%A:&%s&'&&%&dt.strftime(&'%A'&)&&
print&&&'%%b:&%s&'&&%&dt.strftime(&'%b'&)&&
print&&&'%%B:&%s&'&&%&dt.strftime(&'%B'&)&&
print&&&'日期时间%%c:&%s&'&&%&dt.strftime(&'%c'&)&&
print&&&'日期%%x:%s&'&&%&dt.strftime(&'%x'&)&&
print&&&'时间%%X:%s&'&&%&dt.strftime(&'%X'&)&&
print&&&'今天是这周的第%s天&'&&%&dt.strftime(&'%w'&)&&
print&&&'今天是今年的第%s天&'&&%&dt.strftime(&'%j'&)&&
print&&&'今周是今年的第%s周&'&&%&dt.strftime(&'%U'&)&&
Python代码&&
dt&=&datetime.now()&&
print&'(%Y-%m-%d&%H:%M:%S&%f):&',&dt.strftime('%Y-%m-%d&%H:%M:%S&%f')&&
print&'(%Y-%m-%d&%H:%M:%S&%p):&',&dt.strftime('%y-%m-%d&%I:%M:%S&%p')&&
print&'%%a:&%s&'&%&dt.strftime('%a')&&
print&'%%A:&%s&'&%&dt.strftime('%A')&&
print&'%%b:&%s&'&%&dt.strftime('%b')&&
print&'%%B:&%s&'&%&dt.strftime('%B')&&
print&'日期时间%%c:&%s&'&%&dt.strftime('%c')&&
print&'日期%%x:%s&'&%&dt.strftime('%x')&&
print&'时间%%X:%s&'&%&dt.strftime('%X')&&
print&'今天是这周的第%s天&'&%&dt.strftime('%w')&&
print&'今天是今年的第%s天&'&%&dt.strftime('%j')&&
print&'今周是今年的第%s周&'&%&dt.strftime('%U')&&
阅读(...) 评论()

我要回帖

更多关于 python 获取timestamp 的文章

 

随机推荐