java中的当前时间减去天数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的当前时间减去天数相关的知识,希望对你有一定的参考价值。
java中的当前时间减去天数得到一个时间;但是我想在减去天数的同时在进行加上一个强制回收天数得到与数据库的时间;该怎么写啊
java.util.CalendarvoidsetTime(Date date)
Sets this Calendar's time with the given Date.
设置日期时间
abstract void add(int field, int amount)
Adds or subtracts the specified amount of time to the given calendar field,
based on the calendar's rules.
参数1是 Calendar.DAY_OF_MONTH
参数2是天数,如果是负数,则为减
DategetTime()
Returns a Date object representing this
Calendar's time value (millisecond offset from the Epoch").
再得到时间 参考技术A 没理解你的强制回收天数
是要记录你减去的天数那个数据吗追问
我的强制回收天数比如是:60天;就是说当前的时间减去天数,在加上我之前的强制回收天数就行了;得到时间就行了啊
减去两个日期时间以获得天数(python)
【中文标题】减去两个日期时间以获得天数(python)【英文标题】:Subtract two datetime to get the number of days (python) 【发布时间】:2017-04-17 22:22:30 【问题描述】:在过去的两天里,我一直在思考这个问题,我正处于放弃的边缘。
我有一个名为Renewed_subscription
的列,格式为datetime
。我需要知道从今天到一个人必须续订订阅的日期之间有多少天。
from datetime import datetime
dataset['DaysUntilSub'] = dataset.apply(lambda x: (pd.Timestamp.today().strftime('%Y-%m-%d') - str(dataset['Renewed_subscription'])).days, axis=1)
它抛出错误:
TypeError Traceback(最近一次调用最后一次)
C:\Report.py in ()
--> 166 dataset['DaysUntilSub'] = dataset.apply(lambda x: (pd.Timestamp.today().strftime('%Y-%m-%d') - str(dataset['Renewed_subscription '])).days,axis=1)
168 #dataset['DaysUntilSub'] = dataset.apply(lambda x: (pd.Timestamp.today().strftime('%Y-%m-%d') - str(dataset['Renewed_subscription'] )).days,axis=1)
C:\Users\katep\Anaconda3\lib\site-packages\pandas\core\frame.py in apply(self, func, axis, broadcast, raw, reduce, args, **kwds)
4150 如果 reduce 为 None: 4151减少=真 -> 4152 返回self._apply_standard(f,轴,减少=减少) 4153 其他: 第4154章
C:\Users\katep\Anaconda3\lib\site-packages\pandas\core\frame.py in _apply_standard(self, func, axis, ignore_failures, reduce)
4246 尝试:
4247 for i, v in enumerate(series_gen):
-> 4248 个结果[i] = func(v)
4249 个keys.append(v.name)
4250 例外为 e:
C:\Report.py in (x)
TypeError: ("unsupported operand type(s) for -: 'str' and 'str'", 'occured at index 42')
如果您能指出我的错误,我将不胜感激,因为我无法继续进行分析!
【问题讨论】:
你能读懂你自己的问题吗?!想象我们…… 对不起,我把问题格式化了。 【参考方案1】:如上所述,您不想在减法之前将datetime
转换为字符串。您可以使用简单的-
符号进行操作,然后查找days
的数量。
from datetime import datetime
import pandas as pd
# create example dataframe
df = pd.DataFrame([datetime(1985, 4, 10),
datetime(2010, 4, 10),
datetime(2015, 4, 10),
datetime(2017, 4, 10)], columns=['Renewed_subscription'])
# subtraction with today
df['DaysUntilSub'] = df['Renewed_subscription'].map(lambda x: (datetime.today() - x).days)
数据帧输出
Renewed_subscription DaysUntilSub
0 1985-04-10 11695
1 2010-04-10 2564
2 2015-04-10 738
3 2017-04-10 7
同样的解决方案没有 lambda:
def days_from_today(date):
return (datetime.today() - date).days
df['DaysUntilSub'] = df['Renewed_subscription'].map(days_from_today)
【讨论】:
成功了!非常感谢!两天前,我意识到“没有人是一座孤岛”。亲爱的社区,你能推荐一些关于 lambda 的阅读吗?我认为我对运算符背后的逻辑缺乏了解。lambda
是 Python 内置的内联函数(参见 secnetix.de/olli/Python/lambda_functions.hawk)。在这种情况下,它基本上将每一行数据帧作为输入lambda x:
,然后在冒号后返回输出(datetime.today() - x).days
。
@Stephen,完成!我对地图功能也有疑问 - 是的,我就是那个业余爱好者。
@eponkratova,实际上你并不是那么业余,因为很多人会在这里发布一些东西,然后不会回复反馈,也不会对帮助过他们的人表示感谢。我相信如果你继续努力提出好的问题,并注意给出的反馈(确保你的格式很好),你会在 *** 上做得很好。祝你好运。
@Stepen,感谢 cmets 和编辑 :) 祝你好运@eponkratova【参考方案2】:
我认为问题在于你试图从一个字符串中减去一个字符串。
代码 pd.Timestamp.today().strftime('%Y-%m-%d') 产生一个字符串 '2016-04-31' 并且代码 str(dataset['Renewed_subscription']) 将数据集到 str。没有为字符串定义日期集的减号运算符。我会推荐以下内容: pd.Timestamp.today() - 数据集['Renewed_subscription']
这将为您提供 timedelta 对象。现在您可以通过调用 days 函数将其转换为天数。 例如:
>>> import datetime
>>> a = datetime.datetime(2012, 9, 16, 0, 0)
>>> b = datetime.datetime.today()
>>> v = b-a
>>> v.days
1674
>>>
我希望这会有所帮助。 谢谢
【讨论】:
【参考方案3】:您的问题是您试图从另一个字符串中减去一个字符串。
'字符串' - '其他字符串'
TypeError Traceback (most recent call last)
<ipython-input-1-e61d76792339> in <module>()
----> 1 'string' - 'other string'
TypeError: unsupported operand type(s) for -: 'str' and 'str'
您需要将 datetime 对象彼此相减,然后将 timedelta 对象转换为字符串。例如这样的:
a = datetime.datetime.now()
dataset['DaysUntilSub'] = dataset['Renewed_subscription'].apply(lambda x: (x - a).days, axis=1)
这假定您的“Renewed_subscription”已经是一个日期时间对象。数据框中的结果列将是天数的整数值。
【讨论】:
【参考方案4】:感谢@titipat,我最后采用的解决方案是:
import dataset
dataset['DaysUntilSub'] = dataset['Renewed_subscription'].map(
lambda x: (x - datetime.today()).days)
【讨论】:
首先,如果@titipat 解决了您的问题,请考虑接受他在Help Center 中概述的答案。一旦你有足够的声誉,你也可能会赞成他的回答。其次,lambdas 可能是一个很难的概念。但它们只不过是一个带有一个参数的未命名函数。我在titipat 的答案末尾添加了更多内容,以展示如何使用命名函数完成完全相同的事情。希望他不会介意我编辑他的帖子....以上是关于java中的当前时间减去天数的主要内容,如果未能解决你的问题,请参考以下文章