<Python一下>Time操作

本文介绍了Python中处理时间的多种方法,包括使用UTC和本地时间、时间戳的转换、时间与字符串之间的相互转换等核心功能。通过实例展示了如何利用Python内置的time模块进行日期和时间的计算。

UTC & Local

time 是python的一个模块,其中又有一个同名函数time,返回当前到所谓epoch,即1970.1.1的秒数,不过与Unix不太一样的是,这厮返回的是一个精确度更高的浮点数

说time操作之前,必须说UTC

  • UTCUniversal Time Coordinated,传说中的世界调整时间,全世界的时间都统一到UTC来。前身就是GMT(Greenwich Mean Time,小时候地理教的格林威治时间便是啦)

time.gmtime([secs]):gm就是greenwich mean的意思,所以函数把指定秒数转换成UTC

time.localtime([secs]):本地时间,顾名思义就是时区相关的,而非UTC

以上两者都是返回time.struct_time对象的

import time
# 先来看时区信息
>>>time.tzname
('CST', 'CST') 

CST表示 China Standard Time,tuple的第二个元素表示夏令时下的时区信息,你说什么夏令时是什么鬼啊?自己google去,反正咱天朝没用。

>>>secs = time.time()
>>>secs
1425886401.555671   # 看到好多小数位了吧
>>>time.gmtime(secs)
time.struct_time(tm_year=2015, tm_mon=3, tm_mday=9, tm_hour=7, tm_min=33, tm_sec=21, tm_wday=0, tm_yday=68, tm_isdst=0)             #注意tm_hour是7
>>>time.localtime(secs)
time.struct_time(tm_year=2015, tm_mon=3, tm_mday=9, tm_hour=15, tm_min=33, tm_sec=21, tm_wday=0, tm_yday=68, tm_isdst=0)             #注意tm_hour是15

好了,不是很复杂的东西

time.mktime(tuple):t是一个time.struct_time对象(或者duck-type的符合要求的9-tuple)。是localtime的反操作,也就是说,tuple是被认为是local时间而非UTC 
calendar.timegm(tuple):类似mktime,不过是gmtime的反操作。

>>>local_t = time.localtime(secs)   # local_t是struct_time
>>>time.mktime(local_t)
1425886401.0    # 同样是小数,不过比time()返回的精确度低了
>>>import calendar
>>>gm_t = time.gmtime(secs)
>>>calendar.timegm(gm_t)
1425886401      # 不是小数了,果然不是同个模块的态度就是不一样

Time和字符串

前面的操作还是围绕time.struct_time。有时我们还是希望直接输出字符串的

time.strftime(format[, t])string from time,format是字符串格式,这就牵涉到一堆格式directive了,用到的时候查文档即可。而t一个time.struct_time,可由gmtime()localtime()返回

time.strptime(string[,format])strftime的反操作,将string以format格式转成一个struct_time并返回


每次python一下,记录一下

### 正确配置 Flask `templates` 文件夹并使用动态变量 在 Flask 项目中,可以通过以下方式正确配置 `templates` 文件夹以及传递动态变量至 HTML 模板。 #### 配置 Templates 文件夹 默认情况下,Flask 将寻找名为 `templates` 的文件夹作为模板存储位置。如果需要自定义路径,则可以在创建应用实例时指定: ```python from flask import Flask, render_template app = Flask(__name__, template_folder="custom_templates") # 自定义模板文件夹路径 ``` 如果没有特别指定,Flask 默认会在项目的根目录下查找名为 `templates` 的文件夹[^4]。 --- #### 动态变量的传递与使用 为了向 HTML 模板传递动态数据(如 `title`, `welcome_msg`, 和 `current_time`),可以按照以下步骤操作: 1. **视图函数中准备数据** 在视图函数中准备好要传递给模板的数据,并将其作为关键字参数传递给 `render_template()` 函数。 2. **HTML 模板中接收和显示数据** 使用 Jinja2 模板引擎提供的语法,在 HTML 文件中解析这些动态变量。 以下是完整的实现示例: ##### Python 后端代码 ```python from flask import Flask, render_template import datetime app = Flask(__name__) @app.route('/') def index(): title = "欢迎来到我的网站" welcome_msg = "你好,世界!这是你的主页。" current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") return render_template('index.html', title=title, welcome_msg=welcome_msg, current_time=current_time) if __name__ == '__main__': app.run(debug=True) ``` ##### HTML 前端模板 (`templates/index.html`) ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{{ title }}</title> <!-- 动态标题 --> </head> <body> <h1>{{ welcome_msg }}</h1> <!-- 显示欢迎消息 --> <p>当前时间:{{ current_time }}</p> <!-- 显示当前时间 --> <!-- 可选部分:导航栏或其他内容 --> <nav> <ul> <li><a href="{{ url_for('index') }}">首页</a></li> <li><a href="{{ url_for('about') }}">关于我们</a></li> </ul> </nav> </body> </html> ``` --- #### 解析过程说明 1. **Python 数据传递** 在视图函数中,通过调用 `render_template('template_name.html', key=value)` 方法将动态数据传递到前端模板。这里的 `key` 是模板中的占位符名称,而 `value` 是实际的值[^2]。 2. **Jinja2 渲染机制** 在 HTML 模板中,使用双大括号 `{{ variable_name }}` 占位符来嵌入后端传递过来的动态变量。例如,`{{ title }}` 表示替换为视图函数中传递的实际标题字符串[^5]。 3. **运行效果** 当用户访问 `/` 路径时,浏览器会呈现带有动态内容的网页,包括自定义标题、欢迎信息和实时更新的时间戳。 --- ### 注意事项 - 如果需要更复杂的布局管理,可以考虑使用 Jinja2 提供的模板继承功能。例如,创建一个基础模板 `base.html` 并在其子模板中扩展特定区域[^3]。 - 确保 `templates` 文件夹位于 Flask 应用的根目录下,或者显式指定了其他路径。 - 动态变量名应保持一致性和简洁性以便于维护。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值