我编写了一个函数comp(time1, time2)
,当True
小于time1
时,该函数将返回time2
。我的情况是time1
应始终小于time2
。我需要time1
具有尽可能小的价值(即代表最早可能的时刻)。我怎么能得到这个时间?
答案 0 :(得分:57)
如果使用datetime模块,则date,time和datetime个对象都具有min
和max
属性。
>>> from datetime import date, time, datetime
>>> date.min
datetime.date(1, 1, 1)
>>> date.max
datetime.date(9999, 12, 31)
>>> time.min
datetime.time(0, 0)
>>> time.max
datetime.time(23, 59, 59, 999999)
>>> datetime.min
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
答案 1 :(得分:13)
在python中,datetime对象导出以下常量
datetime.MINYEAR
The smallest year number allowed in a date or datetime object. MINYEAR is 1.
datetime.MAXYEAR
The largest year number allowed in a date or datetime object. MAXYEAR is 9999.
答案 2 :(得分:4)
如果您使用的是标准问题unix时间戳值,那么最早可表示的时刻可以追溯到1970年:
>>> import time
>>> time.gmtime(0)
(1970, 1, 1, 0, 0, 0, 3, 1, 0)
答案 3 :(得分:4)
datetime
模块中的某些功能会服从datetime.MINYEAR
和datetime.MAXYEAR
,并会针对该范围之外的日期提出ValueException
。它们分别分配给1和9999。
calender
模块在很大程度上依赖于datetime
模块,但通常会观察到“proleptic Gregorian”,它会在两个方向上无限延伸。
time
模块同样对时间元组值中的年元素没有特别限制,并且仅使用自纪元以来的秒数来计算时间和日期。
话虽如此,在格里高利日历被采用之前,您无法在1582年2月12日左右之前可靠地处理日期。在那天之前,日期是使用各种位置相关的日历计算的,在标准python中没有支持。
答案 4 :(得分:0)
如果您使用import 'package:flutter/material.dart';
import 'package:pie_chart/pie_chart.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blueGrey,
),
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool toggle = true;
Map<String, double> dataMap = new Map();
@override
void initState() {
super.initState();
dataMap.putIfAbsent("Food", () => 5);
dataMap.putIfAbsent("Gas", () => 3);
dataMap.putIfAbsent("Transportation", () => 2);
dataMap.putIfAbsent("Games", () => 2);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Pie Chart"),
),
body: Container(
child: Center(
child: toggle
? PieChart(
dataMap: dataMap,
legendFontColor: Colors.blueGrey[900],
legendFontSize: 14.0,
legendFontWeight: FontWeight.w500,
animationDuration: Duration(milliseconds: 800),
chartLegendSpacing: 32.0,
chartRadius: MediaQuery.of(context).size.width / 2.7,
showChartValuesInPercentage: true,
showChartValues: true,
chartValuesColor: Colors.blueGrey[900].withOpacity(0.9),
)
: Text("Press FAB to show chart"),
),
),
floatingActionButton: FloatingActionButton(
onPressed: add,
child: Icon(Icons.insert_chart),
),
);
}
void togglePieChart() {
setState(() {
toggle = !toggle;
});
}
void add(){
setState(() {
dataMap["Food"]++;
debugPrint(dataMap["Food"].toString());
});
}
}
模块,则不能保证,因为它遵循平台上的C库函数,可以处理不同的最小和最大时间。 https://docs.python.org/3/library/time.html声明:
此模块中定义的大多数函数都调用具有相同名称的平台C库函数。有时参考平台文档可能会有所帮助,因为这些功能的语义在平台之间会有所不同。
和https://docs.python.org/3/library/time.html#time.mktime状态:
它可以生成时间的最早日期取决于平台。
这是因为这些函数按照C11标准获取或返回time
值:
time_t
和clock_t
中可表示的时间范围和精度为 实现定义的。
与time_t
模块不同,datetime
模块不会公开任何指示其支持的最小值和最大值的常量,因此,如果您确实需要找到平台的最小值和最大值,则可以d需要编写一些代码以在运行时通过实验找到它们,例如使用exponential search。