Python의 시간 및 날짜/시간 모듈에 대한 자세한 소개
시간 모듈에는 세 가지 주요 시간 표현 형식이 있습니다:
a. 타임스탬프 타임스탬프 타임스탬프는 1970년 1월 1일 00:00:00부터 시작하여 초 단위로 계산된 오프셋을 나타냅니다.
b , struct_time 시간 튜플 , 총 9개의 요소 그룹이 있습니다.
c. 형식 시간 형식 시간, 형식화된 구조를 사용하면 시간을 더 쉽게 읽을 수 있습니다. 사용자 정의 형식과 고정 형식이 포함됩니다.
time
일반적으로 사용되는 함수는 time.time()
및 time.sleep()
입니다. time.time()
和time.sleep()
函数。
import timeprint(time.time())
1499305554.3239055
上面的浮点数称为UNIX纪元时间戳,是从1970年1月1日0点起到今天经过的秒数。可以看到后面有6位小数,使用round
函数,可以实现浮点数的四舍五入。如下
# 默认四舍五入到整数位,即不保留小数print(round(time.time()))# 可指定参数保留的小数位数print(round(time.time(), 2))
1499305554 1499305554.49
time.sleep(sec)
可以让当前休眠,参数填入秒(s)。
print('good') time.sleep(5.5)# 5.5秒后才打印这句print('yes')
good yes
其他一些函数的使用
# 返回UTC时间print(time.gmtime())# 返回本地时间,在中国就是UTC+8print(time.localtime())
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=6, tm_hour=1, tm_min=46, tm_sec=0, tm_wday=3, tm_yday=187, tm_isdst=0) time.struct_time(tm_year=2017, tm_mon=7, tm_mday=6, tm_hour=9, tm_min=46, tm_sec=0, tm_wday=3, tm_yday=187, tm_isdst=0)
可以发现这是一个元组类型,中国所在时区位UTC+8,可以发现除了tm_hour
不一样(它们相差了刚好+8),其余都一样。
下面的函数可以返回一个格式化的日期时间,看起来更加直观。
print(time.ctime())print(time.asctime())# 由于使用默认参数和上面的结果一样print(time.ctime(time.time()))print(time.asctime(time.localtime()))
Thu Jul 6 09:46:15 2017 Thu Jul 6 09:46:15 2017 Thu Jul 6 09:46:15 2017 Thu Jul 6 09:46:15 2017
ctime()
可以传入一个时间戳,没有指定参数时,默认使用当前时间戳作为参数。即time.time()
gtime()
可以传入一个struct_time,没有指定参数时,默认使用当前时间。即time.localtime()
struct_time转化为字符串及字符串转为struct_time
strptime的第一个参数是字符串形式的日期,第二个参数是自定义的日期转换格式。这两个参数的格式一定要对应。比如
time.strptime('2017/7/6', '%Y-%m-%d')
一个用了斜杠,一个用了短横线,就会报错。此函数返回一个struct_timestrftime的第一个参数是想要转化成的日期格式,第二个参数是一个struct_time,此函数将元组形式的struct_time转化成第一个参数指定的格式样子,返回的是转化后的日期字符串形式。
%Y-%m-%d
表示年月日,在datetime模块会详细介绍。
a = time.strptime('2017/7/6', '%Y/%m/%d') b = time.strftime('%Y-%m-%d', time.localtime())print(a)print(b)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=6, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=187, tm_isdst=-1) 2017-07-06
测量程序的运行时间
使用时间戳可以方便地计时一段程序地运行时间
start_time = time.time()sum = 0for i in range(10000000):sum += 1end_time = time.time()print(end_time - start_time)
2.185124397277832
可以看到执行循环计算加法一千万次,那段程序花了2秒多。
也可以使用time.clock()
函数
start = time.clock()print(start) # 2.6773594453225194e-06time.sleep(2) end = time.clock()print(end - start) # 差值代表了睡眠2秒的时间。2.000246763295544time.sleep(3)print(time.clock()) # 5.00058991153112,返回的是从第一次调用到这次调用的时间间隔
4.4622657422041984e-07 2.0026006084745567 5.013243112269714
可以看到clock
第一次调用时比较奇怪,它返回的是进程运行的时间。之后再次调用都是与第一次调用clock
的值的差了。即从第一次调用开始算起,到当前调用clock
所经历的时间。
像上面一样,在想测试的一部分代码的上方设置start,结束的地方设置end,相减也能得到片段代码运行时间,而且比time.time()
还要准确。
datetime
datetime模块
用来管理日期和时间,其中有三个子模块。分别是time、date、datetime
,所以想要使用datetime可以使用下面的导入方式。
from datetime import datetime# 返回当前时间now = datetime.now()print(now.year, now.month, now.microsecond)# 可以自定义参数,返回格式化后的时间dt = datetime(2017, 10, 1, 23, 59, 59, 456123)print(dt)
2017 7 719609 2017-10-01 23:59:59.456123
datetime接受7个参数,分别对应年、月、日、时、分、秒、微秒。分别保存在datetime的year、month、day、hour、minute、second、microsecond
属性中。
由时间戳可以转换成datetime类型。如下,使用当前时间的时间戳。实际上等效于datetime.now()
。当然反过来由datetime得到时间戳也是可以的。
# 时间戳转datetimenow = datetime.fromtimestamp(time.time())print(now) sometime = datetime(2017, 7, 5, 23, 59, 59)# datetime转时间戳print(sometime.timestamp())
2017-07-06 09:46:07.903769 1499270399.0
这些datetime对象可以使用><=
dt1 = datetime(2017, 5, 31) dt2 = datetime(2017, 4, 1)print(dt1 - dt2)print(dt1 > dt2)
60 days, 0:00:00 True
UNIX 에포크 타임스탬프라고 하며, 이는 1970년 1월 1일 0시부터 오늘까지 경과된 초 수입니다.
끝에 소수점 이하 6자리가 있는 것을 볼 수 있습니다.round
함수를 사용하면 부동 소수점 숫자를 반올림할 수 있습니다. 다음과 같이 import datetime delta = datetime.timedelta(weeks=2, days=7, hours=1, seconds=59,microseconds=234353) delta1 = datetime.timedelta(days=5, hours=2)print(delta.seconds) # 返回属性hours和seconds的和print(delta.total_seconds()) # 只是以秒来表示这段时间print(delta > delta1)print(delta + delta1)
3659 1818059.234353 True 26 days, 3:00:59.234353
time.sleep(sec)
를 사용하면 현재 Sleep을 설정할 수 있으며, 매개변수로 초(s)를 입력합니다. 🎜🎜from datetime import datetime a = datetime.strptime('2017/7/6', '%Y/%m/%d') b = datetime.now().strftime('%Y-%m-%d')print(a)print(b)
2017-07-06 00:00:00 2017-07-06
tm_hour
를 제외하고는 찾을 수 있습니다. 다릅니다(다릅니다(정확히 +8). 나머지는 동일합니다. 🎜🎜다음 함수는 형식이 지정된 날짜와 시간을 반환할 수 있어 더욱 직관적입니다. 🎜🎜rrreee🎜rrreee- 🎜
ctime()
은 🎜timestamp🎜를 전달할 수 있습니다. 매개변수가 지정되지 않으면 현재 타임스탬프가 사용됩니다. 기본적으로 매개변수로 사용됩니다. 즉,time.time()
🎜 - 🎜
gtime()
은 🎜struct_time🎜을 전달할 수 있습니다. 기본적으로 시간이 사용됩니다. 즉,time.localtime()
🎜
struct_time이 문자열로 변환되고 해당 문자열이 struct_time으로 변환됩니다.
- 🎜strptime의 첫 번째 매개변수는 문자열 형식의 날짜이고, 두 번째 매개변수는 사용자 정의 날짜 변환 형식입니다. 이 두 매개변수의 형식은 일치해야 합니다. 예를 들어,
time.strptime('2017/7/6', '%Y-%m-%d')
가 슬래시를 사용하고 다른 하나에 대시를 사용하면 오류는 다음과 같습니다. 보고되었습니다. 이 함수는 struct_time을 반환합니다🎜 - 🎜strftime의 첫 번째 매개변수는 변환하려는 날짜 형식이고 두 번째 매개변수는 struct_time입니다. 이 함수는 struct_time의 튜플 형식을 첫 번째로 변환합니다. 매개변수에 지정된 형식은 변환된 날짜 문자열 형식입니다. 🎜
%Y-%m-%d
는 연도, 월, 일을 나타내며, datetime 모듈에서 자세히 소개됩니다. 🎜🎜rrreee🎜rrreee프로그램의 실행 시간 측정
🎜타임스탬프를 사용하면 프로그램의 실행 시간을 편리하게 측정할 수 있습니다.🎜🎜rrreee🎜rrreee🎜루프 계산 추가가 천만 번 실행되는 것을 볼 수 있습니다 , 해당 구간에서 절차가 2초 이상 소요되었습니다. 🎜🎜time.clock()
함수를 사용해도 됩니다🎜🎜rrreee🎜rrreee🎜처음 호출하면 시계
가 이상하다는 걸 알 수 있죠, 🎜 프로세스 실행 시간 🎜을 반환합니다. 모든 후속 호출은 clock
에 대한 첫 번째 호출 값과 다릅니다. 즉, 첫 번째 호출부터 clock
에 대한 현재 호출까지 경과된 시간입니다. 🎜위처럼 테스트하려는 코드 부분 위에 start를 설정하고, 끝 부분에 end를 설정하면 이를 빼서 조각 코드의 실행 시간을 얻을 수도 있으며 시간보다 더 정확합니다. 시간()
. 🎜🎜datetime🎜🎜datetime 모듈
은 날짜와 시간을 관리하는 데 사용되며 세 개의 하위 모듈이 있습니다. time, date, datetime
이므로 datetime을 사용하려면 다음 가져오기 방법을 사용하면 됩니다. 🎜🎜rrreee🎜rrreee🎜datetime은 연도, 월, 일, 시, 분, 초, 마이크로초에 해당하는 7개의 매개변수를 허용합니다. 날짜/시간의 연도, 월, 일, 시, 분, 초, 마이크로초
속성에 각각 저장됩니다. 🎜🎜타임스탬프는 날짜/시간 유형으로 변환될 수 있습니다. 다음과 같이 현재 시간의 타임스탬프를 사용합니다. datetime.now()
와 사실상 동일합니다. 물론, datetime에서 타임스탬프를 얻는 것도 가능합니다. 🎜🎜rrreee🎜rrreee🎜 이러한 날짜/시간 개체는 ><=
기호를 사용하여 두 날짜의 순서를 비교할 수 있습니다. 두 순간의 차이를 표현하기 위해 빼기 연산을 수행할 수도 있습니다. 예를 들어 🎜🎜rrreee🎜rrreee🎜timedelta는 기간을 의미합니다.🎜🎜순간이 아니라 기간을 의미합니다. 🎜🎜rreee🎜3659 1818059.234353 True 26 days, 3:00:59.234353
timedelta的接受的参数有weeks、days、hours、minutes、seconds、microseconds
,但是其属性却只有days、seconds、microseconds
。并且除了像datetime一样支持大小比较、减法运算外,还可以进行加法运算,表示两个时间段的差值。
将datetime转化为字符串形式及字符串转为datetime对象
time模块也有这两个函数(见上面的例子),使用上比较累类似。
strptime按照指定格式将字符串形式的日期转换成datetime对象并返回。
strftime将一个datetime对象(比如now)根据指定的格式转换成字符串并返回。
from datetime import datetime a = datetime.strptime('2017/7/6', '%Y/%m/%d') b = datetime.now().strftime('%Y-%m-%d')print(a)print(b)
2017-07-06 00:00:00 2017-07-06
关于日期时间的格式,看下表。
格式指令 | 含义 |
---|---|
%Y | 带世纪的四位年份,如2017 |
%y | 后两位年份,如17表示2017 |
%m | 月份,从01到12 |
%B | 完整的月份,如November |
%b | 月份的简写,如Nov |
%d | 一个月中的第几天,如从01到31(如果有的话) |
%j | 一年中的第几天 |
%w | 一周中的第几天 |
%A | 完整的周几,如Monday |
%a | 简写的周几,如Mon |
%H | 24小时制的小时00-23 |
%h | 12小时制的小时01-12 |
%M | 分,00-59 |
%S | 秒,00-59 |
%p | AM或者PM |
위 내용은 Python의 시간 및 날짜/시간 모듈에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

MySQL 설치 실패의 주된 이유는 다음과 같습니다. 1. 권한 문제, 관리자로 실행하거나 Sudo 명령을 사용해야합니다. 2. 종속성이 누락되었으며 관련 개발 패키지를 설치해야합니다. 3. 포트 충돌, 포트 3306을 차지하는 프로그램을 닫거나 구성 파일을 수정해야합니다. 4. 설치 패키지가 손상되어 무결성을 다운로드하여 확인해야합니다. 5. 환경 변수가 잘못 구성되었으며 운영 체제에 따라 환경 변수를 올바르게 구성해야합니다. 이러한 문제를 해결하고 각 단계를 신중하게 확인하여 MySQL을 성공적으로 설치하십시오.

MySQL 다운로드 파일은 손상되었습니다. 어떻게해야합니까? 아아, mySQL을 다운로드하면 파일 손상을 만날 수 있습니다. 요즘 정말 쉽지 않습니다! 이 기사는 모든 사람이 우회를 피할 수 있도록이 문제를 해결하는 방법에 대해 이야기합니다. 읽은 후 손상된 MySQL 설치 패키지를 복구 할 수있을뿐만 아니라 향후에 갇히지 않도록 다운로드 및 설치 프로세스에 대해 더 깊이 이해할 수 있습니다. 파일 다운로드가 손상된 이유에 대해 먼저 이야기합시다. 이에 대한 많은 이유가 있습니다. 네트워크 문제는 범인입니다. 네트워크의 다운로드 프로세스 및 불안정성의 중단으로 인해 파일 손상이 발생할 수 있습니다. 다운로드 소스 자체에도 문제가 있습니다. 서버 파일 자체가 고장 났으며 물론 다운로드하면 고장됩니다. 또한 일부 안티 바이러스 소프트웨어의 과도한 "열정적 인"스캔으로 인해 파일 손상이 발생할 수 있습니다. 진단 문제 : 파일이 실제로 손상되었는지 확인하십시오

MySQL이 시작을 거부 했습니까? 당황하지 말고 확인합시다! 많은 친구들이 MySQL을 설치 한 후 서비스를 시작할 수 없다는 것을 알았으며 너무 불안했습니다! 걱정하지 마십시오.이 기사는 침착하게 다루고 그 뒤에있는 마스터 마인드를 찾을 수 있습니다! 그것을 읽은 후에는이 문제를 해결할뿐만 아니라 MySQL 서비스에 대한 이해와 문제 해결 문제에 대한 아이디어를 향상시키고보다 강력한 데이터베이스 관리자가 될 수 있습니다! MySQL 서비스는 시작되지 않았으며 간단한 구성 오류에서 복잡한 시스템 문제에 이르기까지 여러 가지 이유가 있습니다. 가장 일반적인 측면부터 시작하겠습니다. 기본 지식 : 서비스 시작 프로세스 MySQL 서비스 시작에 대한 간단한 설명. 간단히 말해서 운영 체제는 MySQL 관련 파일을로드 한 다음 MySQL 데몬을 시작합니다. 여기에는 구성이 포함됩니다

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

MySQL 성능 최적화는 설치 구성, 인덱싱 및 쿼리 최적화, 모니터링 및 튜닝의 세 가지 측면에서 시작해야합니다. 1. 설치 후 innodb_buffer_pool_size 매개 변수와 같은 서버 구성에 따라 my.cnf 파일을 조정해야합니다. 2. 과도한 인덱스를 피하기 위해 적절한 색인을 작성하고 Execution 명령을 사용하여 실행 계획을 분석하는 것과 같은 쿼리 문을 최적화합니다. 3. MySQL의 자체 모니터링 도구 (showprocesslist, showstatus)를 사용하여 데이터베이스 건강을 모니터링하고 정기적으로 백업 및 데이터베이스를 구성하십시오. 이러한 단계를 지속적으로 최적화함으로써 MySQL 데이터베이스의 성능을 향상시킬 수 있습니다.

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.
