本文将分享如何在Python中使用DateTime的详细内容,并且还将对pythondatetime怎么用进行详尽解释,此外,我们还将为大家带来关于pythondate和datetime的取值范围(对
本文将分享如何在 Python 中使用 DateTime的详细内容,并且还将对python datetime怎么用进行详尽解释,此外,我们还将为大家带来关于python date 和 datetime 的取值范围(对比 Mysql 的 datetime 和 timestamp)、Python datetime 模块-datetime() 实例源码、python datetime.datetime、Python datetime.datetime 模块-astimezone() 实例源码的相关知识,希望对你有所帮助。
本文目录一览:- 如何在 Python 中使用 DateTime(python datetime怎么用)
- python date 和 datetime 的取值范围(对比 Mysql 的 datetime 和 timestamp)
- Python datetime 模块-datetime() 实例源码
- python datetime.datetime
- Python datetime.datetime 模块-astimezone() 实例源码
如何在 Python 中使用 DateTime(python datetime怎么用)
所有数据在开始时都会自动分配一个“DOB”(出生日期)。因此,在某些时候处理数据时不可避免地会遇到日期和时间数据。本教程将带您了解 Python 中的 datetime 模块以及使用一些外围库,如pandas 和 pytz。
在 Python 中,任何与日期和时间有关的事情都由 datetime 模块处理,它将模块进一步分为 5 个不同的类。类只是与对象相对应的数据类型。下图总结了 Python 中的 5 个日期时间类以及常用的属性和示例。
3个有用的片段
1.将字符串转换为日期时间格式 ,也许是使用datetime 最常见的情况。
由于日期和时间的字母数字性质,将类似的日期和时间解析为 Python 通常会被解释为字符串。在本节中,我们将介绍如何将字符串列表解析为日期时间格式,以及如何将日期和时间数据拆分和组合到数据框中的各个列中。
片段 1 的打印输出
但是,如果日期时间以不寻常或模棱两可的方式格式化怎么办?一个常见的问题是美国和欧洲的日期时间书写方式之间的区别。在美式格式中,月份在前,而在欧洲样式中,日期在前。
默认情况下,pandas 中的 to_datetime 通过将前一个少于 12 位 (
或者, strftime() 方法有助于在返回字符串之前格式化日期时间。在以下示例中,原始日期时间之间的破折号 (-) 替换为反斜杠 (/),数字月份 (02) 替换为缩写的英语术语 (Feb)。
由于有多种方法可以解释日期(日、月、年)和时间(时、分、秒),因此了解不同的格式代码至关重要。下表是常用格式代码的备忘单。
2.使用时区
没有时区信息的 datetime 对象被称为“naive”,有时区信息的对象(通常在末尾带有 +HH:MM 对应 GMT)被认为是“aware”。pytz 可能是 Python 中最全面的库之一,它简化了时区计算的任务。以下代码段将向您展示如何在“naive”和“aware” datetime 对象之间进行转换,并可以使用不同的时区。代码的最后一部分还演示了如何将给定的日期时间对象转换为本地时区。此示例显示了日本和德国的时区代码,对于其他地区,您可以在此处参考。
片段2的输出
3.使用interval比较两个datetime(s)
有时我们必须有条件地比较两个日期时间。想象一下,您有两个数据框,第一个数据框仅包含一列日期时间,第二个数据框包含两列表示间隔和其余列中的其他信息。您的目标是从第一个数据帧中找到匹配的日期时间,如果它落在第二个数据帧的间隔内,如果是,则复制其他列。
实现此目的的一种方法是使用 pd.Interval 压缩两个日期时间的间隔,然后将它们分配为数据框的索引,稍后可用于有条件地比较和映射日期时间。如果满足时间条件,这可以通过使用 for 循环复制感兴趣的列来完成。
原文:https://towardsdatascience.com/how-to-work-with-datetime-in-
以上就是如何在 Python 中使用 DateTime的详细内容,更多请关注php中文网其它相关文章!
python date 和 datetime 的取值范围(对比 Mysql 的 datetime 和 timestamp)
Python 的情况
先来看看 date 类型吧!
In [1]: from datetime import date
In [2]: date.min
Out[2]: datetime.date(1, 1, 1)
In [3]: str(date.min)
Out[3]: ''0001-01-01''
In [4]: str(date.max)
Out[4]: ''9999-12-31''
可以看到 python 的 date
的取值范围是 0001-01-01
到 9999-12-31
再来看看 datetime 吧!
In [5]: from datetime import datetime
In [6]: str(datetime.min)
Out[6]: ''0001-01-01 00:00:00''
In [7]: str(datetime.max)
Out[7]: ''9999-12-31 23:59:59.999999''
可以看到 python 的 datetime
的取值范围是 0001-01-01 00:00:00
到 9999-12-31 23:59:59.999999
Mysql 的情况
来看看 mysql 的情况吧,下面的官方文档中的内容:
The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in ''YYYY-MM-DD'' format. The supported range is ''1000-01-01'' to ''9999-12-31''.
The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in ''YYYY-MM-DD hh:mm:ss'' format. The supported range is ''1000-01-01 00:00:00'' to ''9999-12-31 23:59:59''.The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of ''1970-01-01 00:00:01'' UTC to ''2038-01-19 03:14:07'' UTC.
总结一下就是:
- date 的取值范围:
1000-01-01
到9999-12-31
- timestamp 的取值范围:
1970-01-01 00:00:01
到2038-01-19 03:14:07
- datetime 的取值范围:
1000-01-01 00:00:00
到9999-12-31 23:59:59
参考资料:mysql 文档
但是需要注意:
Invalid DATE, DATETIME, or TIMESTAMP values are converted to the “zero” value of the appropriate type (''0000-00-00'' or ''0000-00-00 00:00:00''), if the SQL mode permits this conversion. The precise behavior depends on which if any of strict SQL mode and the NO_ZERO_DATE SQL mode are enabled; see Section 5.1.10, “Server SQL Modes”.
还有这部分:
翻译成人话的意思,就是 myql 会把无效的 date 设为 0000-00-00
,无效的 datetime 和 timestamp 设为 0000-00-00 00:00:00
。
比如 2022-13-35
就是一个无效的 date
,当把这个值插入到 mysql 中的时候,开启了严格模式的 mysql 会报错,未开启严格模式的 mysql 会转为 0000-00-00
保存。
‼️ 所以我们使用 Python 从 mysql 读取时间类型的时候,一定要注意这个坑!因为 0000-00-00
没有办法转成 Python 的 date
类型,会报错的!‼️
顺便可以看看 Mysql 的 date、timestamp、datetime 各占用几个字节:
- date 类型 3 字节
- timestamp 类型 4 字节
- datetime 类型 8 字节
参考文章:Data Type Storage Requirements
关于 Mysql 插入的时间类型可以是 0000-00-00
这种格式的原因可以参考:MySQL Incorrect datetime value: ''0000-00-00 00:00:00''
在 Mysql8 中默认是不可以插入这种无效时间的
Python datetime 模块-datetime() 实例源码
Python datetime 模块,datetime() 实例源码
我们从Python开源项目中,提取了以下43个代码示例,用于说明如何使用datetime.datetime()。
- def default(self, obj):
- """default method."""
- if hasattr(obj, ''__json__''):
- return obj.__json__()
- elif isinstance(obj, collections.Iterable):
- return list(obj)
- elif isinstance(obj, datetime):
- return obj.isoformat()
- elif hasattr(obj, ''__getitem__'') and hasattr(obj, ''keys''):
- return dict(obj)
- elif hasattr(obj, ''__dict__''):
- return {member: getattr(obj, member)
- for member in dir(obj)
- if not member.startswith(''_'') and
- not hasattr(getattr(obj, member), ''__call__'')}
- return json.JSONEncoder.default(self, obj)
- def get_response_and_time(self, key, default=(None, None)):
- """ Retrieves response and timestamp for `key` if it''s stored in cache,
- otherwise returns `default`
- :param key: key of resource
- :param default: return this if `key` not found in cache
- :returns: tuple (response,datetime)
- .. note:: Response is restored after unpickling with :meth:`restore_response`
- """
- try:
- if key not in self.responses:
- key = self.keys_map[key]
- response, timestamp = self.responses[key]
- except KeyError:
- return default
- return self.restore_response(response), timestamp
- def setUpTestData(cls):
- super().setUpTestData()
- cls.create_local_and_remote_user()
- cls.user2 = AnonymousUser()
- cls.local_user = UserFactory()
- cls.public_content = ContentFactory(
- visibility=Visibility.PUBLIC, text="**Foobar**", author=cls.profile,
- )
- cls.site_content = ContentFactory(
- visibility=Visibility.SITE, text="_Foobar_"
- )
- cls.limited_content = ContentFactory(visibility=Visibility.LIMITED)
- cls.self_content = ContentFactory(visibility=Visibility.SELF)
- cls.remote_content = ContentFactory(
- visibility=Visibility.PUBLIC, remote_created=make_aware(datetime.datetime(2015, 1, 1)),
- author=cls.remote_profile,
- )
- cls.ids = [
- cls.public_content.id, cls.site_content.id, cls.limited_content.id, cls.self_content.id
- ]
- cls.set = {
- cls.public_content, cls.site_content, cls.limited_content, cls.self_content
- }
- def default(self, obj)
- def test_am_pm_behavIoUr(self):
- check_time = datetime.datetime(
- year=2016, month=11, day=7, hour=22,
- minute=10, second=0, microsecond=1)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=(check_time + datetime.timedelta(hours=-12)))
- self.assertTrue(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def get_time(cls, request, time_attr):
- """Extracts a time object from the given request
- :param request: the request object
- :param time_attr: the attribute name
- :return: datetime.timedelta
- """
- time_part = datetime.datetime.strptime(
- request.params[time_attr][:-4],
- ''%a,%d %b %Y %H:%M:%s''
- )
- return datetime.timedelta(
- hours=time_part.hour,
- minutes=time_part.minute
- )
- def get_datetime(cls, date_attr, time_attr):
- """Extracts a UTC datetime object from the given request
- :param request: the request object
- :param date_attr: the attribute name
- :return: datetime.datetime
- """
- date_part = datetime.datetime.strptime(
- request.params[date_attr][:-4],%d %b %Y %H:%M:%s''
- )
- time_part = datetime.datetime.strptime(
- request.params[time_attr][:-4],%d %b %Y %H:%M:%s''
- )
- # update the time values of date_part with time_part
- return date_part.replace(
- hour=time_part.hour,
- minute=time_part.minute,
- second=time_part.second,
- microsecond=time_part.microsecond
- )
- def coerce_to_dtype(dtype, value):
- """
- Make a value with the specified numpy dtype.
- Only datetime64[ns] and datetime64[D] are supported for datetime dtypes.
- """
- name = dtype.name
- if name.startswith(''datetime64''):
- if name == ''datetime64[D]'':
- return make_datetime64D(value)
- elif name == ''datetime64[ns]'':
- return make_datetime64ns(value)
- else:
- raise TypeError(
- "Don''t kNow how to coerce values of dtype %s" % dtype
- )
- return dtype.type(value)
- def get_open_and_close(day, early_closes):
- market_open = pd.Timestamp(
- datetime(
- year=day.year,
- month=day.month,
- day=day.day,
- hour=9,
- minute=31),
- tz=''US/Eastern'').tz_convert(''UTC'')
- # 1 PM if early close,4 PM otherwise
- close_hour = 13 if day in early_closes else 16
- market_close = pd.Timestamp(
- datetime(
- year=day.year,
- hour=close_hour),
- tz=''US/Eastern'').tz_convert(''UTC'')
- return market_open, market_close
- def create_test_panel_ohlc_source(sim_params, env):
- start = sim_params.first_open \\
- if sim_params else pd.datetime(1990, 3, 0, pytz.utc)
- end = sim_params.last_close \\
- if sim_params else pd.datetime(1990, 8, pytz.utc)
- index = env.days_in_range(start, end)
- price = np.arange(0, len(index)) + 100
- high = price * 1.05
- low = price * 0.95
- open_ = price + .1 * (price % 2 - .5)
- volume = np.ones(len(index)) * 1000
- arbitrary = np.ones(len(index))
- df = pd.DataFrame({''price'': price,
- ''high'': high,
- ''low'': low,
- ''open'': open_,
- ''volume'': volume,
- ''arbitrary'': arbitrary},
- index=index)
- panel = pd.Panel.from_dict({0: df})
- return DataPanelSource(panel), panel
- def get_open_and_close(day, early_closes):
- # only "early close" event in Bovespa actually is a late start
- # as the market only opens at 1pm
- open_hour = 13 if day in quarta_cinzas else 10
- market_open = pd.Timestamp(
- datetime(
- year=day.year,
- hour=open_hour,
- minute=00),
- tz=''America/Sao_Paulo'').tz_convert(''UTC'')
- market_close = pd.Timestamp(
- datetime(
- year=day.year,
- hour=16),
- tz=''America/Sao_Paulo'').tz_convert(''UTC'')
- return market_open, market_close
- def _coerce_datetime(maybe_dt):
- if isinstance(maybe_dt, datetime.datetime):
- return maybe_dt
- elif isinstance(maybe_dt, datetime.date):
- return datetime.datetime(
- year=maybe_dt.year,
- month=maybe_dt.month,
- day=maybe_dt.day,
- tzinfo=pytz.utc,
- )
- elif isinstance(maybe_dt, (tuple, list)) and len(maybe_dt) == 3:
- year, month, day = maybe_dt
- return datetime.datetime(
- year=year,
- month=month,
- day=day,
- )
- else:
- raise TypeError(''Cannot coerce %s into a datetime.datetime''
- % type(maybe_dt).__name__)
- def get_open_and_close(day,
- tz=''Asia/Shanghai'').tz_convert(''UTC'')
- return market_open, market_close
- def test_generator_dates(self):
- """
- Ensure the pipeline of generators are in sync,at least as far as
- their current dates.
- """
- sim_params = factory.create_simulation_parameters(
- start=datetime(2011, 7, 30, tzinfo=pytz.utc),
- end=datetime(2012,
- env=self.env,
- )
- algo = TestAlgo(self, sim_params=sim_params, env=self.env)
- Trade_source = factory.create_daily_Trade_source(
- [8229],
- sim_params,
- )
- algo.set_sources([Trade_source])
- gen = algo.get_generator()
- self.assertTrue(list(gen))
- self.assertTrue(algo.slippage.latest_date)
- self.assertTrue(algo.latest_date)
- def test_progress(self):
- """
- Ensure the pipeline of generators are in sync,at least as far as
- their current dates.
- """
- sim_params = factory.create_simulation_parameters(
- start=datetime(2008,
- end=datetime(2008, 5,
- )
- algo.set_sources([Trade_source])
- gen = algo.get_generator()
- results = list(gen)
- self.assertEqual(results[-2][''progress''], 1.0)
- def test_checks_should_trigger(self):
- class CountingRule(Always):
- count = 0
- def should_trigger(self, dt, env):
- CountingRule.count += 1
- return True
- for r in [CountingRule] * 5:
- self.em.add_event(
- Event(r(), lambda context, data: None)
- )
- mock_algo_class = namedtuple(''FakeAlgo'', [''Trading_environment''])
- mock_algo = mock_algo_class(Trading_environment="fake_env")
- self.em.handle_data(mock_algo, None, datetime.datetime.Now())
- self.assertEqual(CountingRule.count, 5)
- def writeValue(self, value):
- if isinstance(value, (str, unicode)):
- self.simpleElement("string", value)
- elif isinstance(value, bool):
- # must switch for bool before int,as bool is a
- # subclass of int...
- if value:
- self.simpleElement("true")
- else:
- self.simpleElement("false")
- elif isinstance(value, (int, long)):
- self.simpleElement("integer", "%d" % value)
- elif isinstance(value, float):
- self.simpleElement("real", repr(value))
- elif isinstance(value, dict):
- self.writeDict(value)
- elif isinstance(value, Data):
- self.writeData(value)
- elif isinstance(value, datetime.datetime):
- self.simpleElement("date", _datetoString(value))
- elif isinstance(value, list)):
- self.writeArray(value)
- else:
- raise TypeError("unsuported type: %s" % type(value))
- def make_comparable(self, other):
- if isinstance(other, DateTime):
- s = self.value
- o = other.value
- elif datetime and isinstance(other, datetime.datetime):
- s = self.value
- o = other.strftime("%Y%m%dT%H:%M:%s")
- elif isinstance(other, unicode)):
- s = self.value
- o = other
- elif hasattr(other, "timetuple"):
- s = self.timetuple()
- o = other.timetuple()
- else:
- otype = (hasattr(other, "__class__")
- and other.__class__.__name__
- or type(other))
- raise TypeError("Can''t compare %s and %s" %
- (self.__class__.__name__, otype))
- return s, o
- def get_response(self, default=None):
- """ Retrieves response and timestamp for `key` if it''s stored in cache,datetime)
- .. note:: Response is restored after unpickling with :meth:`restore_response`
- """
- try:
- if key not in self.responses:
- key = self.keys_map[key]
- response = self.responses[key]
- except KeyError:
- return default
- return response
- def test_activity_sets_sla_triaged_at():
- r = new_report()
- r.save()
- assert r.sla_triaged_at is None
- # An activity that shouldn''t update sla_triaged_at
- d1 = Now()
- r.activities.create(id=1, type=''activity-comment'', created_at=d1)
- assert r.sla_triaged_at is None
- # And Now one that should
- d2 = d1 + datetime.timedelta(hours=3)
- r.activities.create(id=2, type=''activity-bug-not-applicable'', created_at=d2)
- assert r.sla_triaged_at == d2
- # And Now another aciivity that would update the date,if it wasn''t already set
- d3 = d2 + datetime.timedelta(hours=3)
- r.activities.create(id=3, type=''activity-bug-resolved'', created_at=d3)
- assert r.sla_triaged_at == d2
- def _load_date(val):
- microsecond = 0
- tz = None
- try:
- if len(val) > 19:
- if val[19] == ''.'':
- microsecond = int(val[20:26])
- if len(val) > 26:
- tz = TomlTz(val[26:32])
- else:
- tz = TomlTz(val[19:25])
- except ValueError:
- tz = None
- try:
- d = datetime.datetime(int(val[:4]), int(val[5:7]), int(val[8:10]), int(val[11:13]), int(val[14:16]), int(val[17:19]), microsecond, tz)
- except ValueError:
- return None
- return d
- def setUp(self):
- aws_data = {
- ''scalableTargets'': [
- {
- ''ServiceNamespace'': ''ecs'',
- ''ResourceId'': ''service/my_cluster/my_service'',
- ''scalableDimension'': ''ecs:service:DesiredCount'',
- ''MinCapacity'': 1,
- ''MaxCapacity'': 3,
- ''RoleARN'': ''my_role_arn'',
- ''CreationTime'': datetime(2017, 4, 14)
- }
- ],
- ''NextToken'': None
- }
- init = Mock(return_value=None)
- init.return_value = None
- appscaling_client = Mock()
- appscaling_client.describe_scalable_targets = Mock(return_value=aws_data)
- client = Mock(return_value=appscaling_client)
- with Replacer() as r:
- r.replace(''boto3.client'', client)
- r.replace(''deployfish.aws.appscaling.ScalingPolicy.__init__'', init)
- self.appscaling = ApplicationAutoscaling(''my_service'', ''my_cluster'')
- def setUp(self):
- aws_data = {
- ''ServiceNamespace'': ''ecs'',
- ''ResourceId'': ''service/my_cluster/my_service'',
- ''scalableDimension'': ''ecs:service:DesiredCount'',
- ''MinCapacity'': 1,
- ''MaxCapacity'': 3,
- ''RoleARN'': ''my_role_arn'',
- ''CreationTime'': datetime(2017, 14)
- }
- init = Mock(return_value=None)
- init.return_value = None
- appscaling_client = Mock()
- self.describe_scaling_targets = Mock(return_value=aws_data)
- appscaling_client.describe_scalable_targets = self.describe_scaling_targets
- client = Mock(return_value=appscaling_client)
- with Replacer() as r:
- r.replace(''boto3.client'', ''my_cluster'', aws=aws_data)
- def test_edited_is_false_for_newly_created_content_within_15_minutes_grace_period(self):
- with freeze_time(self.public_content.created + datetime.timedelta(minutes=14)):
- self.public_content.save()
- self.assertFalse(self.public_content.edited)
- def test_edited_is_true_for_newly_created_content_after_15_minutes_grace_period(self):
- with freeze_time(self.public_content.created + datetime.timedelta(minutes=16)):
- self.public_content.save()
- self.assertTrue(self.public_content.edited)
- def test_dict_for_view_edited_post(self):
- with freeze_time(self.public_content.created + datetime.timedelta(minutes=16)):
- self.public_content.save()
- self.assertEqual(self.public_content.dict_for_view(self.user), {
- "author": self.public_content.author_id,
- "author_guid": self.public_content.author.guid,
- "author_handle": self.public_content.author.handle,
- "author_home_url": self.public_content.author.home_url,
- "author_image": self.public_content.author.safer_image_url_small,
- "author_is_local": bool(self.public_content.author.user),
- "author_name": self.public_content.author.handle,
- "author_profile_url": self.public_content.author.get_absolute_url(),
- "content_type": self.public_content.content_type.string_value,
- "delete_url": reverse("content:delete", kwargs={"pk": self.public_content.id}),
- "detail_url": self.public_content.get_absolute_url(),
- "formatted_timestamp": self.public_content.timestamp,
- "guid": self.public_content.guid,
- "has_shared": False,
- "humanized_timestamp": "%s (edited)" % self.public_content.humanized_timestamp,
- "id": self.public_content.id,
- "is_authenticated": True,
- "is_author": True,
- "is_following_author": False,
- "parent": "",
- "profile_id": self.public_content.author.id,
- "rendered": self.public_content.rendered,
- "reply_count": 0,
- "reply_url": reverse("content:reply",
- "shares_count": 0,
- "slug": self.public_content.slug,
- "through": self.public_content.id,
- "update_url": reverse("content:update",
- })
- def test_is_time_to_run_before_late_metric_slack_time(self):
- check_time = datetime.datetime(
- year=2016, hour=11,
- minute=9, second=59, microsecond=0)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=(check_time + datetime.timedelta(hours=-1)))
- self.assertFalse(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def test_is_time_to_run_after_late_metric_slack_time(self):
- check_time = datetime.datetime(
- year=2016, microsecond=1)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=(check_time + datetime.timedelta(hours=-1)))
- self.assertTrue(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def test_is_time_to_run_with_already_done_this_hour(self):
- check_time = datetime.datetime(
- year=2016,
- minute=30, microsecond=0)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=check_time)
- self.assertFalse(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def test_is_time_to_run_after_midnight_but_before_late_metric_slack_time(
- self):
- check_time = datetime.datetime(
- year=2016, hour=0,
- minute=5, microsecond=0)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=(check_time + datetime.timedelta(hours=-1)))
- self.assertFalse(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def test_is_time_to_run_after_midnight_and_after_late_metric_slack_time(
- self):
- check_time = datetime.datetime(
- year=2016, microsecond=1)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=(check_time + datetime.timedelta(hours=-1)))
- self.assertTrue(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def test_same_time_different_day_behavIoUr(self):
- check_time = datetime.datetime(
- year=2016, microsecond=1)
- PreHourlyProcessorUtil.get_data_provider().set_last_processed(
- date_time=(check_time + datetime.timedelta(days=-1)))
- self.assertTrue(PreHourlyProcessorUtil.is_time_to_run(check_time))
- def test_crontab():
- c = Crontab()
- c.add(''boo'')
- c.add(''foo'', 0)
- c.add(''bar'', [1, 3], -5, -1, 0)
- assert c.actions(0, 1) == {''boo'', ''foo''}
- assert c.actions(1, 1) == {''boo''}
- assert c.actions(1, 7) == {''boo'', ''bar''}
- assert c.actions(3, ''bar''}
- ts = mktime(datetime(2016, 17, 1).timetuple())
- assert c.actions_ts(ts) == {''boo'', ''bar''}
- def _get_extensions(self):
- pathname = os.path.join(self.dirname, self.filename)
- name_ver = ''%s-%s'' % (self.name, self.version)
- info_dir = ''%s.dist-info'' % name_ver
- arcname = posixpath.join(info_dir, ''EXTENSIONS'')
- wrapper = codecs.getreader(''utf-8'')
- result = []
- with ZipFile(pathname, ''r'') as zf:
- try:
- with zf.open(arcname) as bf:
- wf = wrapper(bf)
- extensions = json.load(wf)
- cache = self._get_dylib_cache()
- prefix = cache.prefix_to_dir(pathname)
- cache_base = os.path.join(cache.base, prefix)
- if not os.path.isdir(cache_base):
- os.makedirs(cache_base)
- for name, relpath in extensions.items():
- dest = os.path.join(cache_base, convert_path(relpath))
- if not os.path.exists(dest):
- extract = True
- else:
- file_time = os.stat(dest).st_mtime
- file_time = datetime.datetime.fromtimestamp(file_time)
- info = zf.getinfo(relpath)
- wheel_time = datetime.datetime(*info.date_time)
- extract = wheel_time > file_time
- if extract:
- zf.extract(relpath, cache_base)
- result.append((name, dest))
- except KeyError:
- pass
- return result
- def _get_x509_days_left(x509):
- date_fmt = ''%Y%m%d%H%M%sZ''
- current_datetime = datetime.datetime.utcNow()
- not_after = time.strptime(x509.get_notAfter(), date_fmt)
- not_before = time.strptime(x509.get_notBefore(), date_fmt)
- ret = {''not_after'': (datetime.datetime(*not_after[:6]) - current_datetime).days,
- ''not_before'': (datetime.datetime(*not_before[:6]) - current_datetime).days}
- return ret
- def time_combined(year,month,day,hour,minute,meridiem):
- """
- Time is tricky. So I am following the simple rules;
- 12:** AM will have the hour changed to 0
- 1:** AM will not have the hour changed
- 12:** PM will not have the hour changed
- 1:** PM will have the hour changed by adding 12
- From these simple points,I have constructed the following
- if statements to take control of the correct hour.
- """
- if meridiem == "AM":
- if hour == 12:
- hour = 0
- else:
- if hour < 12:
- hour = hour + 12
- # Create the final start/end date fields
- return datetime.datetime(
- year,
- month,
- day,
- hour,
- minute
- )
- def parse_neuralynx_time_string(self, time_string):
- # Parse a datetime object from the idiosyncratic time string in Neuralynx file headers
- try:
- tmp_date = [int(x) for x in time_string.split()[4].split(''/'')]
- tmp_time = [int(x) for x in time_string.split()[-1].replace(''.'', '':'').split('':'')]
- tmp_microsecond = tmp_time[3] * 1000
- except:
- warnings.warn(''Unable to parse time string from Neuralynx header: '' + time_string)
- return None
- else:
- return datetime.datetime(tmp_date[2], tmp_date[0], tmp_date[1], # Year,month,day
- tmp_time[0], tmp_time[1], tmp_time[2], # Hour,minute,second
- tmp_microsecond)
- def test_get_vacations_view_is_working_properly(self):
- """testing if GET: /api/users/{id}/vacations view is working properly
- """
- from stalker import db, Vacation
- import datetime
- vac1 = Vacation(
- user=self.test_user1,
- start=datetime.datetime(2016, 24, 0),
- end=datetime.datetime(2016, 28, 0)
- )
- vac2 = Vacation(
- user=self.test_user1, 0)
- )
- db.DBSession.add_all([vac1, vac2])
- db.DBSession.flush()
- import transaction
- transaction.commit()
- from stalker import User
- user1 = User.query.filter(User.login == self.test_user1.login).first()
- response = self.test_app.get(
- ''/api/users/%s/vacations'' % self.test_user1.id
- )
- self.assertEqual(
- sorted(response.json_body),
- sorted([
- {
- ''id'': v.id,
- ''$ref'': ''/api/vacations/%s'' % v.id,
- ''name'': v.name,
- ''entity_type'': v.entity_type
- } for v in [user1.vacations[0], user1.vacations[1]]
- ])
- )
- # TASKS
- def test_update_entity_is_working_properly(self):
- """testing if update_entity() method is working properly
- """
- # create a time log
- import datetime
- start = datetime.datetime(2016, 26, 16)
- end = datetime.datetime(2016, 17)
- new_end = datetime.datetime(2016, 18)
- from stalker import db, TimeLog
- db.DBSession.flush()
- db.DBSession.commit()
- t1 = TimeLog(
- task=self.test_task1,
- resource=self.test_user1,
- start=start,
- end=end,
- created_by=self.test_user2
- )
- db.DBSession.add(t1)
- db.DBSession.commit()
- from stalker_pyramid.testing import DummyRequest, DummyMultiDict
- request = DummyRequest()
- request.matchdict[''id''] = t1.id
- request.params = DummyMultiDict()
- from stalker_pyramid.views import EntityViewBase
- request.params[''end''] = \\
- EntityViewBase.milliseconds_since_epoch(new_end)
- self.patch_logged_in_user(request)
- time_log_view = time_log.TimeLogViews(request)
- response = time_log_view.update_entity()
- t1_db = TimeLog.query.filter(TimeLog.name == t1.name).first()
- self.assertEqual(t1_db.end, new_end)
- def test_delete_entity_is_working_properly(self):
- """testing if delete_entity() method is working properly
- """
- # create a time log
- import datetime
- start = datetime.datetime(2016, 17)
- from stalker import db,
- created_by=self.test_user2
- )
- db.DBSession.add(t1)
- db.DBSession.commit()
- from stalker_pyramid.testing import DummyRequest
- request = DummyRequest()
- request.matchdict[''id''] = t1.id
- time_log_view = time_log.TimeLogViews(request)
- response = time_log_view.delete_entity()
- self.assertIsNone(
- TimeLog.query
- .filter(TimeLog.task == self.test_task1)
- .filter(TimeLog.resource == self.test_user1)
- .first()
- )
- def test_update_entity_is_working_properly_with_post(self):
- """testing if POST: /api/time_logs/{id} view is working properly
- """
- # create a time log
- import datetime
- start = datetime.datetime(2016,
- created_by=self.test_user2
- )
- db.DBSession.add(t1)
- db.DBSession.commit()
- from stalker_pyramid.views import EntityViewBase
- self.admin_login()
- response = self.test_app.post(
- ''/api/time_logs/%s'' % t1.id,
- params={
- ''end'': EntityViewBase.milliseconds_since_epoch(new_end)
- },
- status=200
- )
- t1_db = TimeLog.query.filter(TimeLog.name == t1.name).first()
- self.assertEqual(t1_db.end, new_end)
- def test_delete_entity_is_working_properly(self):
- """testing if DELETE: /api/time_logs/{id} view is working properly
- """
- # create a time log
- import datetime
- start = datetime.datetime(2016,
- created_by=self.test_user2
- )
- db.DBSession.add(t1)
- db.DBSession.commit()
- response = self.test_app.delete(
- ''/api/time_logs/%s'' % t1.id,
- status=200
- )
- self.assertIsNone(
- TimeLog.query
- .filter(TimeLog.task == self.test_task1)
- .filter(TimeLog.resource == self.test_user1)
- .first()
- )
- def test_create_entity_with_invalid_user_id(self):
- """testing if create_entity() method is working properly with invalid
- user_id parameter
- """
- import datetime
- start = datetime.datetime(2016, 22, 10)
- end = datetime.datetime(2016, 16)
- from stalker_pyramid.testing import DummyRequest, DummyMultiDict
- from stalker_pyramid.views import EntityViewBase
- request = DummyRequest()
- request.params = DummyMultiDict()
- request.params[''user_id''] = -1
- request.params[''start''] = \\
- EntityViewBase.milliseconds_since_epoch(start)
- request.params[''end''] = EntityViewBase.milliseconds_since_epoch(end)
- vacation_views = vacation.VacationViews(request)
- from pyramid.httpexceptions import HTTPServerError
- with self.assertRaises(HTTPServerError) as cm:
- vacation_views.create_entity()
- self.assertEqual(
- str(cm.exception),
- ''Missing "user_id" parameter''
- )
python datetime.datetime
1.datetime.datetime
datetime.datetime类也可以作为方法使用,它的参数有
year, month=None, day=None, hour=0, minute=0, second=0,
microsecond=0, tzinfo=None, *, fold=0
通常我们用前六个,也就是年月日,时分秒,其中年月日是必选参数,不选会报错
TypeError: required argument 'day' (pos 3) not found
选了三个参数的话会返回一个格式化时间字符串,
print(datetime.datetime(2021,4,27))
# 输出结果
2021-04-27 00:00:00
它的类型为
<class 'datetime.datetime'>
2.datetime.datetime的方法
datetime.today() 返回本地的时间
print(datetime.datetime.today())
print(type(datetime.datetime.today()))
# 输出结果
2021-04-27 22:01:08.852135
<class ‘datetime.datetime’>
datetime.Now([tz]) 返回本地的时间,不过可以加参数,tz获取当前时区的时间 tz的类型为tzinfo subclass
datetime.datetime.utcNow() 返回utc时区的时间
**datetime.fromtimestamp(timestamp[, tz]):**根据时间戮创建一个datetime对象,参数tz指定时区信息;
a = time.time()
b= datetime.datetime.fromtimestamp(a)
print(b)
print(type(b))
# 输出结果
2021-04-27 22:12:25.053921
<class 'datetime.datetime'>
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
datetime.strptime(date_string, format): 将格式化的时间字符串转换为datetime对象
a = '2021-04-27 22:12:25'
b = datetime.datetime.strptime(a,'%Y-%m-%d %H:%M:%s')
print(type(b))
# 输出结果
<class 'datetime.datetime'>
Python datetime.datetime 模块-astimezone() 实例源码
Python datetime.datetime 模块,astimezone() 实例源码
我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用datetime.datetime.astimezone()。
- def parse(cls, report, objects, data, localcontext):
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = datetime.Now()
- localcontext[''print_date''] = datetime.astimezone(dt.replace(
- tzinfo=pytz.utc), timezone)
- localcontext[''print_time''] = localcontext[''print_date''].time()
- return super(PatientEvaluationReport, cls).parse(report,
- localcontext)
- def parse(cls,
- localcontext)
- def normalize(self, dt, is_dst=False):
- ''''''Correct the timezone information on the given datetime.
- This is normally a no-op,as StaticTzInfo timezones never have
- ambiguous cases to correct:
- >>> from pytz import timezone
- >>> gmt = timezone(''GMT'')
- >>> isinstance(gmt,StaticTzInfo)
- True
- >>> dt = datetime(2011,5,8,1,2,3,tzinfo=gmt)
- >>> gmt.normalize(dt) is dt
- True
- The supported method of converting between timezones is to use
- datetime.astimezone(). Currently normalize() also works:
- >>> la = timezone(''America/Los_Angeles'')
- >>> dt = la.localize(datetime(2011,7,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def get_report_start_date(self, name):
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = self.evaluation_start
- return datetime.astimezone(dt.replace(tzinfo=pytz.utc), timezone).date()
- def get_report_start_time(self, timezone).time()
- def get_report_end_date(self, name):
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = self.evaluation_end
- return datetime.astimezone(dt.replace(tzinfo=pytz.utc), timezone).date()
- def get_report_end_time(self, timezone).time()
- def get_report_prescription_date(self, name):
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = self.prescription_date
- return datetime.astimezone(dt.replace(tzinfo=pytz.utc), timezone).date()
- def get_report_prescription_time(self, timezone).time()
- def get_report_evaluation_date(self, timezone).date()
- def get_report_evaluation_time(self, timezone).time()
- def get_print_date():
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = datetime.Now()
- return datetime.astimezone(dt.replace(tzinfo=pytz.utc), timezone)
- def get_report_surgery_time(self, name):
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = self.surgery_date
- return datetime.astimezone(dt.replace(tzinfo=pytz.utc), timezone).time()
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def get_report_start_date(self, timezone).date()
- def get_report_start_time(self, timezone).time()
- def get_report_end_date(self, timezone).date()
- def get_report_end_time(self, timezone).time()
- def get_report_prescription_time(self, timezone).time()
- def get_report_evaluation_date(self, timezone).date()
- def get_report_evaluation_time(self, timezone).time()
- def get_print_date():
- Company = Pool().get(''company.company'')
- timezone = None
- company_id = Transaction().context.get(''company'')
- if company_id:
- company = Company(company_id)
- if company.timezone:
- timezone = pytz.timezone(company.timezone)
- dt = datetime.Now()
- return datetime.astimezone(dt.replace(tzinfo=pytz.utc), timezone)
- def get_report_surgery_date(self, timezone).date()
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
- def normalize(self,3))
- >>> fmt = ''%Y-%m-%d %H:%M:%s %Z (%z)''
- >>> gmt.normalize(dt).strftime(fmt)
- ''2011-05-07 08:02:03 GMT (+0000)''
- ''''''
- if dt.tzinfo is self:
- return dt
- if dt.tzinfo is None:
- raise ValueError(''Naive time - no tzinfo set'')
- return dt.astimezone(self)
今天关于如何在 Python 中使用 DateTime和python datetime怎么用的介绍到此结束,谢谢您的阅读,有关python date 和 datetime 的取值范围(对比 Mysql 的 datetime 和 timestamp)、Python datetime 模块-datetime() 实例源码、python datetime.datetime、Python datetime.datetime 模块-astimezone() 实例源码等更多相关知识的信息可以在本站进行查询。
本文标签: