各位老铁们好,相信很多人对python计算时间间隔都不是特别的了解,因此呢,今天就来为大家分享下关于python计算时间间隔以及python两个日期之间相隔天数的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
一、python编写用pow()函数计算球的体积
使用键盘输入值并不是编辑表中值的唯一方式。在某些情况下,为了设置字段值,可能要对单条记录甚至是所有记录执行数学计算。您可以对所有记录或选中记录执行简单计算和高级计算。此外,还可以在属 *** 表中的字段上计算面积、长度、周长和其他几何属 *** 。以下各部分包括使用字段计算器的若干示例。使用 Python、SQL和 Arcade执行计算。
本主题着重于基于 Python的计算字段示例。要了解有关 Arcade表达式的详细信息,请参阅 ArcG *** Arcade指南。要了解有关 SQL表达式的详细信息,请参阅计算字段。
Python强制将缩进作为语法的一部分。请使用两个或四个空格来定义每个逻辑级别。将语句块的开头和结尾对齐并且保持一致。
Python计算表达式字段将使用惊叹号(!!)括起。
命名变量时,请注意 Python区分大小写,因此 value不同于 Value。
输入语句后,如果想将其写入文件,请单击导出。导入按钮将提示您查找和选择一个现有的计算文件。
仅通过一个短表达式就可以计算出多种计算结果。
一系列 Python字符串函数均支持使用字符串,包括 capitalize、rstrip和 replace。
将 CITY_NAME字段中字符串的首字母大写。
去掉 CITY_NAME字段中自字符串结尾起的所有空白区。
将 STATE_NAME字段中的“california”全部替换为“California”。
!STATE_NAME!.replace("california","California")
在 Python中,字符串字段中的字符可以通过索引和分割 *** 作进行访问。索引 *** 作将在索引位置提取字符,而分割 *** 作则会提取一组字符。在下表中,假设!fieldname!是值为"abcde"的字符串字段。
Python也支持使用 for *** t() *** 的字符串格式。
将合并后的 FieldA和 FieldB以冒号分隔开。
"{}:{}".for *** t(!FieldA!,!FieldB!)
Python提供了处理数字的工具。Python也支持一些数值和数学函数,包括 *** th、c *** th、deci *** l、random、itertools、functools和 operator。
根据给定的半径字段计算球体的体积。
4.0/ 3.0* *** th.pi*!Radius!** 3
在 ArcG *** Pro中,使用的是 Python 3,在 ArcG *** Desktop中,使用的 Python 2。Python 2使用的是整型数学计算,这就意味着两个整型值相除将始终生成整型值(3/ 2= 1)。在 Python 3中,两个整型值相除将生成浮点型值(3/ 2= 1.5)。
Python包含多个可用的内置函数,包括 *** x、min、round和 sum。
通过字段列表计算每条记录的更大值。
*** x([!field1!,!field2!,!field3!])
通过字段列表计算每条记录的总和。
sum([!field1!,!field2!,!field3!])使用代码块
通过 Python表达式和代码块参数可执行以下 *** 作:
在表达式中应用任意 Python函数。
使用 if-then-else逻辑对值进行重分类。
支持 Python功能。使用 Python函数(def)表示代码块。在适当的情况下,几何属 *** 将通过地理处理对象表示(如点对象)。
执行 SQL表达式可以更好地支持使用要素服务和企业级地理数据库的计算,尤其是在 *** 能方面。使用该表达式可以将单次请求设置为要素服务或数据库,而不必一次执行一个要素或一行的计算。
在 ArcG *** Desktop中,计算字段工具支持 VB、PYTHON和 PYTHON_9.3表达式类型。VB表达式类型,在某些产品中受支持,但在 *** 位产品中不受支持,其中包括 ArcG *** Pro。
出于相后兼容 *** 考量,ArcG *** Pro中仍然支持 PYTHON和 PYTHON_9.3关键字,但是不会作为选择列出。使用这些关键字的 Python脚本将可继续使用。
Python 3表达式类型与旧版 PYTHON_9.3关键字的唯一区别在于 Python 3会将日期字段中的值作为 Python datetime对象返回。
Python 3表达式类型与随 ArcG *** Pro安装的 Python版本无关。这只是历史上的第三个 Python相关关键字(继 PYTHON和 PYTHON_9.3之后。
各 Python函数可通过 def关键字定义,关键字后为函数名称及函数的输入参数。可编写 Python函数,使 Python函数能够接受任何数量的输入参数(也可以没有任何参数)。函数将通过 ret *** n语句返回值。函数名称可由您自行选取(不得使用空格,也不得以数字开头)。
如果函数未通过 ret *** n语句显式返回值,则函数将返回 None。
请牢记,Python强制要求将缩进作为语法的一部分。请使用四个空格来定义每个逻辑级别。将语句块的开头和结尾对齐并且保持一致。
在使用以下数学示例时,请假设表达式类型为 Python 3。
将字段的值四舍五入为保留两位小数。
通过 *** th模块将米转换成英尺。以转换值为底,以 2为指数进行幂运算,然后再乘以 area。
MetersToFeet((float(!shape.area!)))
ret *** n *** th.pow(3.2808, 2)* area通过 Python逻辑计算字段
可以使用 if、else和 elif语句将逻辑模式包含在代码块中。
if(WellYield>= 0 and WellYield<= 10):
elif(WellYield> 10 and WellYield<= 20):
elif(WellYield> 20 and WellYield<= 30):
除以下代码示例外,请参阅下方的“几何单位转换”部分,以了解有关转换几何单位的详细信息。
# Count the number of points in the c *** rent multipart feat *** e
# Enter while loop for each part in the feat *** e(if a singlepart
# feat *** e, this will occ *** only once)
# Enter while loop for each vertex
# If pnt is null, either the part is finished or there
将点要素类中每个点的 x坐标平移 100。
几何字段的面积和长度属 *** 可通过用@符号表示的单位类型进行修改。
ACRES| ARES| HECTARES| SQUARECENTIMETERS| SQUAREDECIMETERS| SQUAREINCHES| SQUAREFEET| SQUAREKILOMETERS| SQUAREMETERS| SQUAREMILES| SQUAREMILLIMETERS| SQUAREYARDS| SQUAREMAPUNITS| UNKNOWN
CENTIMETERS| DECIMALDEGREES| DECIMETERS| FEET| INCHES| KILOMETERS| METERS| MILES| MILLIMETERS| NAUTICALMILES| POINTS| UNKNOWN| YARDS
如果数据存储在地理坐标系中且具有线 *** 单位(例如英尺),则会通过测地线算法转换长度计算的结果。
转换地理坐标系中数据的面积单位会生成不正确的结果,这是由于沿 globe的十进 *** 并不一致。
计算某要素的长度(以码为单位)。
计算某要素的面积(以英亩为单位)。
测地线面积和长度也可以通过带@(后跟测量单位关键字)的 geodesicArea和 geodesicLength属 *** 进行计算。
计算某要素的测地线长度(以码为单位)。
计算某要素的测地线面积(以英亩为单位)。
!shape.geodesicArea@acres!代码实例-日期
日期和时间可使用 datetime和 time模块进行计算。
计算的日期为 2000年 12月 31日。
datetime.datetime(2000, 12, 31)
计算当前日期和字段中的值之间的天数。
(datetime.datetime.now()-!field1!).days
通过向字段中的日期值添加 100天来计算日期。
!field1!+ datetime.timedelta(days=100)
计算字段中的日期值为一周中的周几(例如,星期天)。
!field1!.strftime('%A')代码实例-字符串
可以使用多种 Python编码模式来完成字符串计算。
将所有大写字母 P替换为小写字母 p。
!SUB_REGION!+""+!STATE_ABBR!转换为正确的大小写形式
下列各例显示的是转换单词的不同 *** ,这些 *** 可使每个单词的首字母变为大写、其余字母变为小写。
''.join([i.capitalize() for i in!STATE_NAME!.split('')])表达式:
!STATE_NAME!.title()正则表达式
Python的 re模块提供了正则表达式匹配 *** 作,可用于对字符串执行复杂的模式匹配和替换规则。
re-正则表达式运算正则表达式的用法
使用单词 Street替换 St或 St.,在字符串的末尾生成一个新单词。
def update_street(street_name):
ret *** n re.sub(r"""\b(St|St.)\Z""",
street_name)累加计算和顺序计算
可以使用全局变量来进行累加计算和顺序计算。
根据某间隔值计算顺序 ID或数字。
pStart= 1# adjust start value, if req'd
pInterval= 1# adjust interval value, if req'd
percentIncrease(float(!FieldA!))
def percentIncrease(newValue):
percentage=((newValue- lastValue)/ lastValue)* 100
可以使用 random模块来计算随机值。
通过 numpy站点包来计算 0.0和 1.0之间的随机浮点值。
使用随机模块来计算 0与 10之间的随机整数。
在 Python表达式中,可通过 Python None来计算空值。
仅当该字段为空时,才可以进行以下计算。
二、bat读取时间、计算时间间隔脚本
1、::获取起始月份、起始日期、起始小时和起始分钟
2、echo.&echo修改 *** 日期和时间为未来同一个月份下的某日某月某时某分以便测试脚本
3、::获取终止月份、终止日期、终止小时和终止分钟
4、::初始化间隔日期变量、间隔小时变量和间隔分钟变量
5、::如果结束月份和起始月份不在同一月则调用calc4标签
6、if%endmonth%NEQ%startmonth%(call:calc4&goto:finalresult)
7、::如果结束日期等于起始日期则调用calc1标签
8、if%endday%EQU%startday%(call:calc1&goto:finalresult)
9、::如果结束日期大于起始日期则调用calc2标签
10、if%endday%GTR%startday%(call:calc2&goto:finalresult)
11、::如果结束日期小于起始日期则调用calc3标签
12、if%endday%LSS%startday%(call:calc3&goto:finalresult)
13、::备注:没有规避同一天内结束小时小于起始小时、以及同一小时内结束分钟小于起始分钟的情况,因为在脚本运行过程中,逻辑上一般不会出现这两种情况。
14、::同一天内的耗时计算需考虑到结束分钟小于起始分钟的时候从终止小时借位的情况
15、if/i%endmin%LSS%startmin%(set/aintmin=endmin+60-startmin&set/aendho *** -=1)else(set/aintmin=endmin-startmin)
16、set/aintho *** =endho *** -startho ***
17、setinttime=%intday%天%intho *** %小时%intmin%分钟
18、::同一月份但不同天内的耗时计算需考虑到结束分钟小于起始分钟的时候从终止小时借位的情况需考虑到结束小时小于起始小时的时候从终止日期借位的情况
19、if/i%endmin%LSS%startmin%(set/aintmin=endmin+60-startmin&set/aendho *** -=1)else(set/aintmin=endmin-startmin)
20、if/i%endho *** %LSS%startho *** %(set/aintho *** =endho *** +24-startho *** &set/aendday-=1)else(set/aintho *** =endho *** -startho *** )
21、setinttime=%intday%天%intho *** %小时%intmin%分钟
22、::同一月份下结束日期逻辑上不能小于起始日期抛出错误
23、setinttime=错误!结束日期小于起始日期!
三、如何求两个日期间隔的年份差
1、计算年份差,即两个日期之间的年份差距,是历史学、考古学、人口统计学等众多学科中常见的需求。在日常生活和学术研究中,我们经常需要确定两个时间点之间的年份差距。以下是几种常用的计算年份差的数学 *** 和公式:
2、这是最简单直接的 *** 。假设我们有两个年份A和B(A> B),年份差可以通过以下公式计算:
3、例如,如果我们要计算2023年和2000年之间的年份差,我们只需做如下计算:
4、如果需要考虑闰年的影响进行精确计算,我们需要知道每个年份是否为闰年,并对闰年进行调整。闰年是指能够被4整除的年份(除了那些能被100整除但不能被400整除的年份)。对于闰年,我们可以考虑它有366天,而非闰年有365天。计算公式如下:
5、年份差=(非闰年数* 365)+(闰年数* 366)
6、其中,闰年数和非闰年数需要通过分别计算两个日期范围内的闰年数量和非闰年数量来得到。
7、在编程语言中,通常有内置的函数或 *** 来计算日期差。例如,在Python中,可以使用datetime模块来计算两个日期间的年份差。这涉及到复杂的内部算法,但可以提供非常精确的结果,包括对闰年和不同月份天数差异的自动调整。
8、为了简化计算,有时会使用一些近似公式来估算年份差,尤其是在对精确度要求不高的情况下。一个常见的近似 *** 是简单地忽略闰年的存在,只计算年份之间的差值。这种 *** 在计算较短的时间跨度时误差不大,但对于较长的时间跨度则可能不够准确。
9、在计算古代日期与现代日期之间的年份差时,还需要考虑历法的变更。例如,公历(格里高利历)在1582年取代了儒略历,这种历法变更导致了日期的变化。在这种情况下,计算年份差需要特别注意历法的不同以及由此产生的时间差异。
10、总结来说,计算年份差的 *** 可以从简单的直接相减到复杂的编程算法不等。选择哪种 *** 取决于所需的精确度和应用的上下文。在大多数日常应用中,直接相减法已经足够使用。然而,在需要精确计算的情况下,比如科学研究或法律文件,可能需要使用更精确的 *** ,考虑闰年和历法变更的影响。
python计算时间间隔和python两个日期之间相隔天数的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!