Python入門から応用までの学習サイト


日付・時間

日付時間はプログラミングでの使用頻度は高い方だと思います。 言語ごとにかなり違いがあるので、調べたりする機会は多々あると思います。

日付の取得方法は下記の通りです。 標準ライブラリである「datetime」を使用しましょう。※標準ライブラリで特定の機能を使用したい場合はこのように「import」を用います。「str('a')」や「int('1')」は「import」を行わずに使うことができます。

# -*- coding: utf-8 -*- 

import datetime


today        =    datetime.date.today()
todaydetail  =    datetime.datetime.today()

# 今日の日付
print '--------------------------------------------'
print today
print todaydetail

# 今日に日付:それぞれの値
print '--------------------------------------------'
print today.year
print today.month
print today.day
print todaydetail.year
print todaydetail.month
print todaydetail.day
print todaydetail.hour
print todaydetail.minute
print todaydetail.second
print todaydetail.microsecond

# 日付のフォーマット
print '--------------------------------------------'
print today.isoformat()
print todaydetail.strftime("%Y/%m/%d %H:%M:%S")

--実行結果--

--------------------------------------------
2010-05-08
2010-05-08 15:42:00.731000
--------------------------------------------
2010
5
8
2010
5
8
15
42
0
731000
--------------------------------------------
2010-05-08
2010/05/08 15:42:00


日付の計算は「timedelta」を使用します。 「timedelta」は月の日数、うるう年なども気にしないでよいので、自分で計算するより手間を省くことができます。

# -*- coding: utf-8 -*- 

import datetime


today = datetime.datetime.today()

# 今日の日付
print today

# 明日の日付
print today + datetime.timedelta(days=1)

newyear = datetime.datetime(2010, 1, 1)

# 2010年1月1日の一週間後
print newyear + datetime.timedelta(days=7)

# 2010年1月1日から今日までの日数
calc = today - newyear

# 計算結果の戻り値は「timedelta」
print calc.days

--実行結果--

2010-05-08 15:36:24.006000
2010-05-09 15:36:24.006000
2010-01-08 00:00:00
127


その年がうるう年かどうかを判定するには「calendar.isleap」を、指定期間内に何回のうるう年があるかを取得するには「calendar.leapdays」を使用します。

# -*- coding: utf-8 -*-

import calendar

print calendar.isleap(2015)
print calendar.isleap(2016)
print calendar.isleap(2017)

print calendar.leapdays(2010, 2020)

--実行結果--

False
True
False
2



Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 

配列は絶対必須!

▶基礎編:配列・連想配列



確かな力が身につく
Python「超」入門




P  R