有没有办法在没有这样的日子的情况下指定datetime.date(year=1900, month=1, day=None)
:
datetime.date
我有一个没有完整指定日期的数据集(有时只有年份和月份)。我想用- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
NSString *tokenAsString = [[[deviceToken description]
stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
stringByReplacingOccurrencesOfString:@" " withString:@""];
[[NSUserDefaults standardUserDefaults] setObject: token forKey:@"deviceToken"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
表示没有耍花招。
答案 0 :(得分:2)
&#34;美丽胜过丑陋。明确比隐含更好......&#34; - Python's Philosophy
内置datetime.date
无法做到这一点。 Python datetime.date
没有函数签名,因为它不会设置日期值。也许是因为date
没有day
(月份)在现实生活中自然不完整。
此外,由于day
输入被视为Integer
,因此它必须具有值。并且默认的整数值为0将导致日表示错误(尽管计数datetime
的内部机制可能会解决它),因为现实生活中的day
从1开始。简而言之,{{ 1}}做得相当不错(在使用安全方面) - 与其一致&#34;明确优于隐含哲学&#34; - 通过不让用户在没有指定日期的情况下调用它(即:通过暗示函数签名中需要的内容,就像每个优秀程序员所做的那样)。
但是,只要您觉得烦人或不必要,就可以创建自己的函数包装器。
编辑:
或使用Python自己的包装器:
datetime.date
对我而言,似乎最简单的做法是使用当前内置值monthdate = functools.partial(datetime.date, day=1) #edit by ShadowRanger
作为1。
day
要添加的datetime.date(1900, 1, 1)
非常短
答案 1 :(得分:1)
datetime.date
代表格里高利历中的一天。它是不可变的,因此必须在创建它的瞬间知道所有值。如果明确使用构造函数,则无法省略该日期。
如有必要,我有一个没有完整指定日期的数据集
datetime.strptime()
会提供默认值:
>>> from datetime import datetime
>>> datetime.strptime('2016-02', '%Y-%m').date()
datetime.date(2016, 2, 1)