一个合理的日期/时间python接口:更好的epoch时间、时区和增量——django支持

sanetime的Python项目详细描述


#sane time

**一个合理的日期/时间python接口:*更好的epoch时间、时区和增量,django支持

我知道唯一理智的储存时间的方法就是使用纪元时间。(你有,不是吗?)
不幸的是,使用标准的python工具集操作epoch时间和时区需要在python模块和概念的管理上获得最新的速度:date time、date、time、calendar、pytz、dateutils、timedelta、time tuples、localize、normalize。

**sanetime**试图使epoch时间的操作更加理智,tim时间增量,时间增量,时间一般。

>``python
>gt>gt;
>>>>>>>>从sanetime进口时间,增量``小味道

>
>>>>>>gt;>时间('2012-05-01 22:31,tz='美国/纽约')。毫秒
<133559258600

>>>>>>>>>>>>>>str(时间(欧洲/伦敦)现在在伦敦
'2012-05-29-2012-05-05-29 15:28:05.178741 1.178741 1 1.178741.178741.178


>>>>>>>>>+欧洲/伦敦>时间(2012,6,1)-时间('2012-05-01’)。小时
744

>>>>;>时间(+delta(h=12))。从现在起12小时
>13383444977
>```>

<<<









时间(2012,6,1)-时间(2012,6,1)-时间(2012-05-01’)。时间(2012-05-01’)。时间


时间(2012,6,6,1)`时间'类表示时间中时间从epoch开始的微秒。
"time"对象也有一个关联Ted时区(默认为UTC),但是在散列、比较或相等检查期间,永远不会考虑时区,
即,在美国/纽约经历的"时间"时刻等于在欧洲/都柏林经历的"时间"时刻。


tztime

tztime类与"时间"对象完全相同,只是时区**将**因素分为相等、比较和散列。
在美国/纽约体验的"tztime"时刻**与在欧洲/都柏林体验的"tztime"时刻**不同。

ce这个:
微秒、毫秒、秒、分、小时、平均日、平均周、平均月、平均年。
还有许多不同的类型:圆形、地板状、浮动状、位置状、圆形。
delta中还没有尝试识别日历(因此在某些情况下是"平均"前缀)。

/>"span"类表示从一个特定时刻到另一个特定时刻的时间窗口。
您可以将其视为带有"delta"的开始"时间",或是开始"时间"和停止"时间"。


django

时间。
他们对auto-add和auto-add功能表示敬意,这些功能可以方便地将您的sanetitime转换为更新的或创建的字段。
他们甚至可以使用South Out the Box。



可以从纪元时间、日期时间构造一个sanetime对象,日期/时间部分,或来自可分析字符串。

<时间(micro=133885088800000000)
sanetime(1338858800000000,<;UTC>;<;UTC>;)

>时间(milliss=1338858588800000)
>sanetime(133885858800000000,<;UTC>;)
>
>时间(secs=133885858800)
>sanetime(133885858800000000,<;UTC>;)
>time(secs=1338858588000)
>sanetime(133885850880000000000,<;UTC>;>;)


>
>>>>>>;gt;gt;;时间(分钟=22308480,tz='美国/纽约')
sanetIME(133850880000000,<;dsttzinfo"美国/纽约"est-1 day,19:00:00 std>;)
```


<;utc>;)

>;>time(2012,1,1,12,30,1,1,tz='America/New-York')
sanetime(13254210010000001,<;dsttzinfo'America/New-York'est-1 day,19:00:00 std>;)
````


t=datetime(2012,1,1)
>时间(dt)
>sanetime(132535376000000000000000,<;utc>;)
``



>
>或由可解析字符串构造:

>``python
>时间(2012年1月1日12:30:01pm12:30:01)
>sanetime(13254542101000000,<;utc>;)

>时间(132535353760000000000,<;utc>;)
>sanetime(2012,1月1日,2012年1月1日12:30:01:01pm12:30:01);时间(
>一月2012年1月1日中午12:30:01,tz="美国/纽约")
sanetime(132542101000000,<;dsttzinfo"美国/纽约"est-1天,19:00:00 std>;)
````



还可以添加任何"delta":

``python
>;>time(2012,1,1)+5
sanetime(1325376000000005,<;utc>;)

>;>time(2012,1,1)+delta(hours=5)
sanetime(132539400000000,<;utc>;)
```



```巨蟒
>gt>gt;time()-时间(2012,1,1)从新年开始的时间
sanedelta(15131333333909063956)


>gt;abs(time()-time());构造时间的微秒构造时间
>30
```






转换为支持时区的DateTim或者去一个"天真"的约会时间。它们作为属性访问。

``python
>;>time(2012,1,1,tz='america/los'angeles')。datetime
datetime。datetime(2012,1,1,0,0,tzinfo=<;dsttzinfo'america/los'angeles'pst-1 day,16:00:00 std>;)

>;>time(2012,1,1,tz='america/los'angeles')。naively_日期时间
日期时间。日期时间(2012,1,1,0,0)
````

还有其他方便的日期时间时区转换。

```python
>;>time(2012,1,1,tz='America/Los'Angeles')。UTC日期时间
日期时间(2012,1,1,8,0,tzinfo=<;utc>;)

>gt;时间(2012,1,1,tz='america/los/洛杉矶').utc\u naive\u-datetime
datetime.datetime(2012,1,1,8,8,0)

>>;时间(2012,1,1,1,1,tz='america/los/洛杉矶').ny/u datetime
datetime.datetime(2012,1,1,1,1,3,0,tzinfo=<;dsttzinfo'america/new'dsttztstzinfo'america/new'dsttztstztststzinfo'america/new'纽约最早1天,19:00:00:00 std>;)
克gt;时间(2012,1,1,tz='america/los/洛杉矶').ny\u naive\u datetime
datetime.datetime(2012,1,1,1,3,3,0)
`````



>划时代:

`````python
>gt;时间(2012,1,1,1).min
>22089600

>22089600
>22089600
>>;时间(2012,1,1,1).s
1325376000


1325376000

>>>>>技术信息me(2012,1,1).millis
1325376000000

>;>time(2012,1,1).micros
1325376000000000
``````

int(time(2012,1,1))

``python
>;
,1))
1325376000000000L
```





小心--这些属性都是单数的。不要与前一节的复数时代可能性混淆。(这种模糊性将在以后的版本中得到修正)

`` python
>;>>time().year
2012
>;>time().month
6
>;>time().day
24
>;>time().hour
3
>;time().minute
42
>;time().second
12
>;.>;gt;time().micro
664819
````

e对象与sanetime对象具有所有相同的可能性,但请记住,现在时区对于相等、比较和哈希运算很重要。
如果未指定时区,则默认为UTC。

`` python
>;sanetztime(1358919880245463,<;utc>;)\now

>;>;>;tztime(tz="美国/纽约")现在在纽约
sanetztime(1358919987623544,<;dsttzinfo‘美国/纽约’est-1天,19:00:00 std>;)


>;>;tztime(ms=1325376000000,tz="美国/纽约")
sanetztime(1325376000000000,<;dsttzinfo‘美国/纽约’est-1天,19:00:00 std>;)

>>>tztime(2012年1月1日,2012年1月1日,tz='america/new纽约')
sanetztime(132535394000000000,<;dsttzinfo‘america/new纽约’est-1天,19:00:00 std>;)
`````



`````
```
``从sanetime导入delta ```从sanetime导入delta ``从sanetime导入delta ` `


>

`>构造

0增量:

`` python
>;>delta()
sanedelta(0)
````

>原始参数假定为微秒:
`` python
>;>delta(1000)
sanedelta(1000)
````

--但无论你认为它可能会起作用:
`` python
>;>>delta(hours=30)
sanedelta(108000000000)

>;>delta(s=30)
sanedelta(30000000)

>;>delta(seconds=30)
sanedelta(30000000)

>;>delta(secs=30)
sanedelta(30000000)
(30000000)
````

正好是7*24小时。"平均月"正好是(365*4+1)/4/12*24小时。"平均年"正好是(365*4+1)/4*24小时。

``python
>;>delta(平均月数=30)
sanedelta(18144000000000)
````

d并相互减去。
如果原始数是增量的加或减,则假定为微秒。

``python
>;>delta(h=1)-增量(m=1,s=1)
sanedelta(3539000000)

>;sanedelta(999000)
``

####转换

delta可以通过多种方式(四舍五入、整数(即地板)或浮动)转换为任何历元数。当未指定时,它们将被舍入:

`` python
>>;>from sanetime import delta
>;>delta(ms=9482923939)。分钟舍入
158049
>;>delta(ms=9482923939)。整分钟舍入
158049
>;>delta(ms=9482923939)。整分钟/>158048
>;>delta(ms=9482923939)。float_minutes
158048.7323166666
```

lta(s=150)
>;>d.位置时间
2
>;>d.位置时间
30
````

您必须提供一个KWARG来完成后者。

`` python
>;>span(time(),delt a(s=90))
sanespan(start=sanetime(1358925692752574,<;utc>;),delta=sanedelta(90000000))

>;sanespan(start=sanetime(1358925841490454,<;utc>;),delta=sanedelta(37))
````



功能是可靠的,在生产系统中使用时没有问题——只是还没有时间处理文档——请在这里随时提供帮助)


\notes


\docs
总有一天我们会把所有东西都记录下来……



python的datetime允许我们访问微秒,而且由于毫秒已经让我们跨越32位整数边界,所以我们最好尽可能地捕获所有信息,并占用微秒时间。
在time、tztime和delta上有很多帮助程序,使得使用epoch seconds或milis与使用micros一样简单。

例如t=time();t.ms==t.millis==t.millistices
*属性只要合理:属性对django特别有用,因为您可以直接在模板中使用它们,而不必首先在视图中放置它们。

s://travis ci.org/hubspot/sanetime)
[pypi中的sanetime](http://pypi.python.org/pypi/sanetime)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用prepared语句在oracle中插入日期   对点具有双重值的java   使用多个通配符的java请求映射   java Springboot为什么要设置springbootstartertomcat   除了对JavaBean的请求之外,还使用servletContext的servlet   java如何清除OCSID。返回到池的连接时的CLIENTID JDBC客户端信息属性   将整型数组转换为光栅Java   java使用对象引用作为互斥锁   java为什么在编程语言中使用sin函数返回奇怪的sin值不像计算器   java如何将JButton链接到对象并调用相关方法   php用Java发送POST数据   导航属性的java模拟加载   java多个活动错误Android试图对空对象引用调用虚拟方法“”   java Android更改ActionBar文本颜色   如何使用带有java反射且不带开关的parant引用创建子类