|
30 | 30 | }, |
31 | 31 | "outputs": [], |
32 | 32 | "source": [ |
| 33 | + "# 举例\n", |
33 | 34 | "# 猜数,机器猜\n", |
34 | 35 | "\n", |
35 | 36 | "min = 0\n", |
|
55 | 56 | "cell_type": "markdown", |
56 | 57 | "metadata": {}, |
57 | 58 | "source": [ |
58 | | - "* 日期库 datetime 用法介绍,datetime、time 等库的介绍,获得日期,字符串和日期转换,日期格式介绍,日期加减计算" |
59 | | - ] |
60 | | - }, |
61 | | - { |
62 | | - "cell_type": "markdown", |
63 | | - "metadata": {}, |
64 | | - "source": [ |
65 | | - "### 日期\n", |
| 59 | + "### 日期处理\n", |
66 | 60 | "\n", |
67 | 61 | "datetime 是Python处理日期和时间的标准库,用于获取日期和进行日期计算等。\n", |
68 | 62 | "\n", |
69 | | - "理解 timestamp,UTC标准时区,时差\n", |
| 63 | + "理解 timestamp,UTC标准时区,时差这些概念。\n", |
70 | 64 | "\n", |
71 | | - "Python 的日期相关的库有 datetime, time, calendar\n", |
| 65 | + "Python 的日期相关的标准库比较多,有 datetime, time, calendar。\n", |
72 | 66 | "\n", |
73 | | - "Datetime 包括 date 日期,time 时间, datetime 日期和时间,tzinfo 时区,timedelta 时间跨度计算 等主要对象\n", |
74 | | - "\n", |
75 | | - "获取当前日期和时间:now = datetime.now()\n", |
| 67 | + "datetime 库包括 date 日期,time 时间, datetime 日期和时间,tzinfo 时区,timedelta 时间跨度计算 等主要对象。\n", |
76 | 68 | "\n", |
| 69 | + "获取当前日期和时间:`now = datetime.now()`\n", |
77 | 70 | "\n", |
78 | 71 | "日期戳和日期的区别,日期戳更加精确,日期只是年月日\n", |
79 | 72 | "根据需要使用,大多数情况下只需要日期即可\n", |
80 | 73 | "\n", |
81 | 74 | "Time 对于时间的处理更加精确,用时间戳的表达方式\n", |
82 | 75 | "\n", |
83 | | - "时间戳定义为格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,时间戳是惟一的\n", |
84 | | - "显示今天日期\n", |
85 | | - "\n", |
86 | | - "显示今天 datetime 和 time\n", |
87 | | - "\n", |
88 | | - "连续运行显示时间戳,看看时间戳差了多少毫秒\n", |
89 | | - "\t\n", |
90 | | - "看看日期、时间的数据结构\n", |
91 | | - "\t\n", |
92 | | - "用循环显示 10 次时间戳\n", |
93 | | - "\n", |
94 | | - "用 time() 来计时,算10万次平方,看看哪台电脑速度快\n", |
95 | | - "\n", |
96 | | - "日期库-字符串和日期的转换\n", |
97 | | - "\n", |
98 | | - "字符串转化为日期:datetime.strptime()\n", |
99 | | - "\n", |
100 | | - "日期转换为字符串:datetime.strftime()\n", |
101 | | - "\n", |
102 | | - "日期库 – 各类格式\n", |
103 | | - "\n", |
104 | | - "日期字符串格式,举例\n", |
105 | | - "Date format string, example: \n", |
106 | | - "cday1 = datetime.now().strftime('%a, %b %d %H:%M')\n", |
107 | | - "cday2 = datetime.now().strftime('%A, %b %d %H:%M, %j')\n", |
108 | | - "cday3 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')\n", |
109 | | - "\n", |
110 | | - "日期库 – 日期格式说明\n", |
111 | | - "\n", |
112 | | - "%a 英文星期的简写 (shorthand of week in English)\n", |
113 | | - "%A 英文星期的完整拼写 (longhand of week in English)\n", |
114 | | - "%b 英文月份的简写 (shorthand of month in English)\n", |
115 | | - "%B 英文月份的完整拼写 (longhand of month in English)\n", |
116 | | - "%c 本地当前的日期与时间 (current local date and time)\n", |
117 | | - "%d 日期数, 1-31之间 (date, between 1-31))\n", |
118 | | - "%H 小时数, 00-23之间 (hour, between 00-23))\n", |
119 | | - "%I 小时数, 01-12之间 (hour, between 01-12)\n", |
120 | | - "%m 月份, 01-12之间 (month, between 01-12)\n", |
121 | | - "%M 分钟数, 01-59之间 (minute, 01-59)\n", |
122 | | - "%j 本年从第1天开始计数到当天的天数 (total days from 1st day of this year till now)\n", |
123 | | - "%w 星期数, 0-6之间(0是周日) (day of the week, between 0-6, 0=Sunday)\n", |
124 | | - "%W 当天属于本年的第几周,周一作为一周的第一天进行计算 (week of the year, starting with Monday )\n", |
125 | | - "%x 本地的当天日期 (local date)\n", |
126 | | - "%X 本地的当前时间 (local time)\n", |
127 | | - "%y 年份,0-99之间 (year, between 0-99)\n", |
128 | | - "%Y 年份的完整拼写 (longhand of year)\n", |
129 | | - "\n", |
130 | | - "日期计算\n", |
131 | | - "\n", |
132 | | - "对日期和时间进行加减实际上就是把 datetime 往后或往前计算,得到新的 datetime\n", |
133 | | - "需要导入 datetime 的 timedelta 类\n", |
134 | | - "\n", |
135 | | - "练习和讨论\n", |
136 | | - "\n", |
137 | | - "输入刚才时间格式转换的例子\n", |
138 | | - "\t\n", |
139 | | - "尝试改变时间格式的各类参数,看看输出的样式有什么不同\n", |
140 | | - "\t\n", |
141 | | - "输入刚才时间加减的例子\n", |
142 | | - "\t\n", |
143 | | - "尝试改变时间加减的各类参数,看看年月日时分秒都可以怎么加减\n", |
144 | | - "\n", |
145 | | - "\n", |
146 | | - "输入一个年份,比如 20030801 这样的字符串,转换为标准日期格式并显示\n", |
147 | | - "\t\n", |
148 | | - "继续上面,输入后,显示这个日期之前一年和之后一年分别是星期几?" |
| 76 | + "时间戳定义为格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,时间戳是惟一的\n" |
149 | 77 | ] |
150 | 78 | }, |
151 | 79 | { |
152 | 80 | "cell_type": "code", |
153 | | - "execution_count": 1, |
| 81 | + "execution_count": 2, |
154 | 82 | "metadata": { |
155 | 83 | "collapsed": false |
156 | 84 | }, |
|
159 | 87 | "name": "stdout", |
160 | 88 | "output_type": "stream", |
161 | 89 | "text": [ |
162 | | - "2016-12-10 08:59:11.176761\n", |
163 | | - "2016-12-10\n" |
| 90 | + "2016-12-21 15:16:25.879226\n", |
| 91 | + "2016-12-21\n", |
| 92 | + "1482304585.879344\n" |
164 | 93 | ] |
165 | 94 | } |
166 | 95 | ], |
167 | 96 | "source": [ |
| 97 | + "# 显示今天日期\n", |
| 98 | + "# 显示今天 datetime 和 time\n", |
| 99 | + "\n", |
168 | 100 | "from datetime import datetime, date\n", |
169 | 101 | "\n", |
170 | 102 | "print(datetime.now())\n", |
171 | | - "print(date.today())" |
| 103 | + "print(date.today())\n", |
| 104 | + "\n", |
| 105 | + "import time\n", |
| 106 | + "\n", |
| 107 | + "print(time.time())" |
172 | 108 | ] |
173 | 109 | }, |
174 | 110 | { |
175 | 111 | "cell_type": "code", |
176 | | - "execution_count": 2, |
| 112 | + "execution_count": 3, |
177 | 113 | "metadata": { |
178 | 114 | "collapsed": false |
179 | 115 | }, |
|
182 | 118 | "name": "stdout", |
183 | 119 | "output_type": "stream", |
184 | 120 | "text": [ |
185 | | - "1481331557.520238\n", |
186 | | - "2016-12-10 08:59:17.520305\n" |
| 121 | + "<class 'float'>\n", |
| 122 | + "<class 'datetime.datetime'>\n" |
187 | 123 | ] |
188 | 124 | } |
189 | 125 | ], |
190 | 126 | "source": [ |
191 | | - "from datetime import datetime, date\n", |
192 | | - "import time\n", |
| 127 | + "# 时间和日期戳的数据类型\n", |
193 | 128 | "\n", |
194 | | - "print(time.time())\n", |
195 | | - "print(datetime.now())" |
| 129 | + "print(type(time.time()))\n", |
| 130 | + "print(type(datetime.now()))" |
196 | 131 | ] |
197 | 132 | }, |
198 | 133 | { |
199 | 134 | "cell_type": "code", |
200 | | - "execution_count": 3, |
| 135 | + "execution_count": 1, |
201 | 136 | "metadata": { |
202 | 137 | "collapsed": false |
203 | 138 | }, |
|
206 | 141 | "name": "stdout", |
207 | 142 | "output_type": "stream", |
208 | 143 | "text": [ |
209 | | - "<class 'float'>\n", |
210 | | - "<class 'datetime.datetime'>\n" |
| 144 | + "2016-12-10 08:59:11.176761\n", |
| 145 | + "2016-12-10\n" |
211 | 146 | ] |
212 | 147 | } |
213 | 148 | ], |
214 | | - "source": [ |
215 | | - "print(type(time.time()))\n", |
216 | | - "print(type(datetime.now()))" |
217 | | - ] |
| 149 | + "source": [] |
218 | 150 | }, |
219 | 151 | { |
220 | 152 | "cell_type": "code", |
|
241 | 173 | } |
242 | 174 | ], |
243 | 175 | "source": [ |
| 176 | + "# 连续运行显示时间戳,看看时间戳差了多少毫秒\n", |
244 | 177 | "for i in range(10):\n", |
245 | 178 | " print(time.time())" |
246 | 179 | ] |
247 | 180 | }, |
248 | 181 | { |
249 | 182 | "cell_type": "code", |
250 | | - "execution_count": 5, |
| 183 | + "execution_count": 7, |
251 | 184 | "metadata": { |
252 | 185 | "collapsed": false |
253 | 186 | }, |
|
256 | 189 | "name": "stdout", |
257 | 190 | "output_type": "stream", |
258 | 191 | "text": [ |
259 | | - "time: 0.01288294792175293\n" |
| 192 | + "time: 0.011564016342163086\n" |
260 | 193 | ] |
261 | 194 | } |
262 | 195 | ], |
263 | 196 | "source": [ |
| 197 | + "# 用 time() 来计时,算10万次平方,看看哪台电脑速度快\n", |
| 198 | + "\n", |
264 | 199 | "a = time.time()\n", |
265 | 200 | "for i in range(100000):\n", |
266 | 201 | " j = i * i \n", |
|
270 | 205 | "print('time:', b-a)" |
271 | 206 | ] |
272 | 207 | }, |
| 208 | + { |
| 209 | + "cell_type": "markdown", |
| 210 | + "metadata": {}, |
| 211 | + "source": [ |
| 212 | + "日期库-字符串和日期的转换\n", |
| 213 | + "\n", |
| 214 | + "字符串转化为日期:datetime.strptime()\n", |
| 215 | + "\n", |
| 216 | + "日期转换为字符串:datetime.strftime()\n", |
| 217 | + "\n", |
| 218 | + "日期库 – 各类格式\n", |
| 219 | + "\n", |
| 220 | + "日期字符串格式,举例\n", |
| 221 | + "Date format string, example: \n", |
| 222 | + "cday1 = datetime.now().strftime('%a, %b %d %H:%M')\n", |
| 223 | + "cday2 = datetime.now().strftime('%A, %b %d %H:%M, %j')\n", |
| 224 | + "cday3 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')\n", |
| 225 | + "\n", |
| 226 | + "日期库 – 日期格式说明\n", |
| 227 | + "\n", |
| 228 | + "%a 英文星期的简写 (shorthand of week in English)\n", |
| 229 | + "%A 英文星期的完整拼写 (longhand of week in English)\n", |
| 230 | + "%b 英文月份的简写 (shorthand of month in English)\n", |
| 231 | + "%B 英文月份的完整拼写 (longhand of month in English)\n", |
| 232 | + "%c 本地当前的日期与时间 (current local date and time)\n", |
| 233 | + "%d 日期数, 1-31之间 (date, between 1-31))\n", |
| 234 | + "%H 小时数, 00-23之间 (hour, between 00-23))\n", |
| 235 | + "%I 小时数, 01-12之间 (hour, between 01-12)\n", |
| 236 | + "%m 月份, 01-12之间 (month, between 01-12)\n", |
| 237 | + "%M 分钟数, 01-59之间 (minute, 01-59)\n", |
| 238 | + "%j 本年从第1天开始计数到当天的天数 (total days from 1st day of this year till now)\n", |
| 239 | + "%w 星期数, 0-6之间(0是周日) (day of the week, between 0-6, 0=Sunday)\n", |
| 240 | + "%W 当天属于本年的第几周,周一作为一周的第一天进行计算 (week of the year, starting with Monday )\n", |
| 241 | + "%x 本地的当天日期 (local date)\n", |
| 242 | + "%X 本地的当前时间 (local time)\n", |
| 243 | + "%y 年份,0-99之间 (year, between 0-99)\n", |
| 244 | + "%Y 年份的完整拼写 (longhand of year)\n", |
| 245 | + "\n" |
| 246 | + ] |
| 247 | + }, |
273 | 248 | { |
274 | 249 | "cell_type": "code", |
275 | | - "execution_count": 6, |
| 250 | + "execution_count": 5, |
276 | 251 | "metadata": { |
277 | 252 | "collapsed": false |
278 | 253 | }, |
|
283 | 258 | "text": [ |
284 | 259 | "2016-05-02 18:19:59\n", |
285 | 260 | "<class 'datetime.datetime'>\n", |
286 | | - "2016, 12 10 08:59\n", |
| 261 | + "2016, 12 21 18:22\n", |
287 | 262 | "<class 'str'>\n" |
288 | 263 | ] |
289 | 264 | } |
|
300 | 275 | }, |
301 | 276 | { |
302 | 277 | "cell_type": "code", |
303 | | - "execution_count": 7, |
| 278 | + "execution_count": 6, |
304 | 279 | "metadata": { |
305 | 280 | "collapsed": false |
306 | 281 | }, |
|
309 | 284 | "name": "stdout", |
310 | 285 | "output_type": "stream", |
311 | 286 | "text": [ |
312 | | - "Sat, Dec 10 09:00\n" |
| 287 | + "Wed, Dec 21 18:22\n" |
313 | 288 | ] |
314 | 289 | } |
315 | 290 | ], |
|
387 | 362 | "print(type(t))" |
388 | 363 | ] |
389 | 364 | }, |
| 365 | + { |
| 366 | + "cell_type": "markdown", |
| 367 | + "metadata": {}, |
| 368 | + "source": [ |
| 369 | + "日期计算\n", |
| 370 | + "\n", |
| 371 | + "对日期和时间进行加减实际上就是把 datetime 往后或往前计算,得到新的 datetime\n", |
| 372 | + "需要导入 datetime 的 timedelta 类\n", |
| 373 | + "\n", |
| 374 | + "练习和讨论\n", |
| 375 | + "\n", |
| 376 | + "输入刚才时间格式转换的例子\n", |
| 377 | + "\t\n", |
| 378 | + "尝试改变时间格式的各类参数,看看输出的样式有什么不同\n", |
| 379 | + "\t\n", |
| 380 | + "输入刚才时间加减的例子\n", |
| 381 | + "\t\n", |
| 382 | + "尝试改变时间加减的各类参数,看看年月日时分秒都可以怎么加减\n", |
| 383 | + "\n" |
| 384 | + ] |
| 385 | + }, |
390 | 386 | { |
391 | 387 | "cell_type": "code", |
392 | 388 | "execution_count": 11, |
|
435 | 431 | "print(now1)" |
436 | 432 | ] |
437 | 433 | }, |
| 434 | + { |
| 435 | + "cell_type": "markdown", |
| 436 | + "metadata": {}, |
| 437 | + "source": [ |
| 438 | + "\n", |
| 439 | + "输入一个年份,比如 20030801 这样的字符串,转换为标准日期格式并显示\n", |
| 440 | + "继续上面,输入后,显示这个日期之前一年和之后一年分别是星期几?" |
| 441 | + ] |
| 442 | + }, |
438 | 443 | { |
439 | 444 | "cell_type": "markdown", |
440 | 445 | "metadata": { |
|
893 | 898 | "name": "python", |
894 | 899 | "nbconvert_exporter": "python", |
895 | 900 | "pygments_lexer": "ipython3", |
896 | | - "version": "3.4.5" |
| 901 | + "version": "3.5.2" |
897 | 902 | } |
898 | 903 | }, |
899 | 904 | "nbformat": 4, |
|
0 commit comments