标签: date-difference

datetime.now() 和用日期填充的系列之间的 Python 年差异?

我想在我的数据集中创建一个新列,这是今天与数据集中已有的另一列之间的年份差异,填充了日期。

上面的代码:

df['diff_years'] = datetime.today() - df['some_date']
df['diff_years']
Run Code Online (Sandbox Code Playgroud)

给我以下输出(示例):

1754 days 11:44:28.971615
Run Code Online (Sandbox Code Playgroud)

我必须得到类似的东西(意味着上面的输出以年为单位):

4,8 
(or 5)
Run Code Online (Sandbox Code Playgroud)

我感谢任何帮助!

PS。:我想避免循环系列,我相信路径会给我一个想要的解决方案,但由于有一个大系列,我想避免这种方式。

python datetime series date-difference pandas

6
推荐指数
1
解决办法
3707
查看次数

Pandas groupby:计算每个组在一个时间范围内出现的次数

我有一个数据帧:

ID  DATE       WIN
A   2015/6/5   Yes
A   2015/6/7   Yes
A   2015/6/7   Yes
A   2015/6/7   Yes
B   2015/6/8   No
B   2015/8/7   Yes
C   2015/5/15  Yes
C   2015/5/30  No
C   2015/7/30  No
C   2015/8/03  Yes
Run Code Online (Sandbox Code Playgroud)

我想添加一个列,计算ID过去1个月内每个胜利的数量,结果如下:

ID  DATE       WIN  NumOfDaysSinceLastWin NumOfWinsInThePast30days
A   2015/6/5   Yes           0               0       
A   2015/6/7   Yes           2               1 
A   2015/6/7   Yes           2               1 or (A 2015/6/7 Yes 0 2)
A   2015/6/8   No            1               3 
B   2015/8/7   No            0               0
B   2015/8/7   Yes           0               0
C   2015/5/15 …
Run Code Online (Sandbox Code Playgroud)

python group-by date-difference pandas rolling-sum

5
推荐指数
1
解决办法
1935
查看次数

获取年、月、日的日期差 SQL

有没有一种方法可以根据今天的日期和生日计算某人的年龄,然后以以下方式显示:

If a user is less than (<) 1 year old THEN show their age in MM & days.
Example:  10 months & 2 days old 

If a user is more than 1 year old AND less than 6 years old THEN show their age in YY & MM & days.
Example:  5 years & 3 months & 10 days old

If a user is more than 6 years old THEN display their age in YY.
Example:  12 years
Run Code Online (Sandbox Code Playgroud)

sql sql-server date date-difference

5
推荐指数
1
解决办法
8493
查看次数

比较不同时区的两个日期对象并获取精确的时间差(以秒为单位)

我正在尝试将电子邮件(日期对象)的接收日期与 JSONObject 中的日期(字符串)进行比较。这两个日期将属于不同时区,相差 1 小时。

我的情况是,我必须在几秒钟内获得它们之间的确切差异,如果差异为 +/- 10 秒,我就会找到匹配项。为此,我决定将两者都转换为“UTC”,然后进行区别。这是我的代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

String MsgDtStr = sdf.format(messagesToBeProcessed.getReceivedDate()); 

Date MsgDt = sdf.parse(MsgDtStr);

Date ObjDt = sdf.parse((JsonObj.get("date").toString()));

int DiffInSecs = (int) (ObjDt.getTime() - MsgDt.getTime()) / 1000 % 60;

if (DiffInSecs >= -10 && DiffInSecs <= 10) {
                System.out.println("Found a match!");
                MatchedList.add(i);
}
Run Code Online (Sandbox Code Playgroud)

这似乎给了我正确的结果。应该与 json 对象匹配的邮件匹配。即差异为 +/- 10 秒。但是,当我尝试打印日期并DiffInSecs在上述逻辑之后,我得到如下值:

date in object: 2017-06-22 19:47:25
date in message: 2017-06-22 23:47:30
DiffInSecs: -5

        ........

date in object: 2017-06-22 17:50:38
date …
Run Code Online (Sandbox Code Playgroud)

java timezone date date-difference

5
推荐指数
1
解决办法
1万
查看次数

在计算1918-03-24之后的天数时,Joda-time一个一个错误

计算使用Joda-Time 之间的天数1900-01-01和日期之间的天数1918-03-24似乎给出了一个一个接一个的结果.

使用Java 8可以java.time得到正确的结果.Joda-Time不计算的原因是什么1918-03-25

使用Joda-time v2.9.9.

public static void main(String[] args) {
    jodaDiff("1918-03-24");
    javaDiff("1918-03-24");
    jodaDiff("1918-03-25");
    javaDiff("1918-03-25");
    jodaDiff("1918-03-26");
    javaDiff("1918-03-26");
    jodaDiff("2017-10-10");
    javaDiff("2017-10-10");
}
private static void jodaDiff(String date) {
    DateTime start = new DateTime(1900, 1, 1, 0, 0, 0, DateTimeZone.forID("UTC"));
    DateTimeFormatter dateDecoder = DateTimeFormat.forPattern("YYYY-MM-dd");
    DateTime end = dateDecoder.parseDateTime(date);
    int diff =  Days.daysBetween(start, end).getDays();
    System.out.println("Joda " + date + " " + diff);
}
private static void javaDiff(String date) {
    LocalDate start = LocalDate.parse("1900-01-01");
    LocalDate …
Run Code Online (Sandbox Code Playgroud)

java datetime jodatime date-difference java-time

5
推荐指数
1
解决办法
352
查看次数

获取第一行和最后一行之间的时间差

我的表结构是这样的

id date         Time                userid

17  2017-01-22  05:08:09.0000000    836232017
16  2017-01-22  05:08:05.0000000    836232017
11  2017-01-22  05:06:40.0000000    836232017
10  2017-01-22  05:06:38.0000000    836232017
7   2017-01-22  05:06:31.0000000    836232017
Run Code Online (Sandbox Code Playgroud)

我需要获取相应用户 ID 和日期的第一个值和最后一个值之间的时间差。例如:用户 ID 836232017 的 datediff 介于 '05:08:09.0000000' 和 '05:06:31.0000000' 之间。请为此提供解决方案。

sql-server datediff date-difference

4
推荐指数
1
解决办法
5328
查看次数

R 从日期时间转换为日期

我必须做日期之间的差异并返回天数。日期格式如下:

12/9/2011 12:00:00 上午

有谁知道如何在不使用 lubridate 的情况下进行差异化处理?

r date-difference

3
推荐指数
1
解决办法
1万
查看次数

找到JDK7中日期的真正区别

如何在JDK7中找到两个日期之间的差异,以便可以添加差异以使两个日期相等?

我尝试使用类似StackOverflow问题的解决方案,从另一个中减去一个日期的毫秒数,但这可能导致日期之间的差异不正确.

在这个例子中,我尝试通过设置使其a相等ba = (b-a) + a

private void makeTwoDatesEqual(GregorianCalendar a, GregorianCalendar b, DatatypeFactory datatypeFactory) {
    long b_minus_a = b.getTimeInMillis() - a.getTimeInMillis();
    Duration delta = datatypeFactory.newDuration(b_minus_a);
    delta.addTo(a);
}
Run Code Online (Sandbox Code Playgroud)

但结果出人意料:

之前

a = "2015-08-29T00:00:00.000Z"
b = "2040-01-01T00:00:00.000Z"
delta = "P24Y4M5DT0H0M0.000S" // 2 days longer than it should be.
Run Code Online (Sandbox Code Playgroud)

a = "2040-01-03T00:00:00.000Z"
b = "2040-01-01T00:00:00.000Z"
delta = "P24Y4M5DT0H0M0.000S"
a.equals(b) = false
Run Code Online (Sandbox Code Playgroud)

Joda-Time也有同样的问题:

private void makeTwoDatesEqual(GregorianCalendar a, GregorianCalendar b) {
    DateTime date1 = new DateTime(a); …
Run Code Online (Sandbox Code Playgroud)

java datetime date jodatime date-difference

3
推荐指数
1
解决办法
188
查看次数

Momentjs calendar() 等效于 Java

Momentjs 具有calendar()漂亮的打印时间跨度的功能,如下所示。

例如:

“上周一下午 1:14”

“09/21/2017”(如果日期是前一段时间)

Java中是否有等效的功能(如果可能,Joda-Time)?

moment().subtract(10, 'days').calendar(); // 09/21/2017
moment().subtract(6, 'days').calendar();  // Last Monday at 1:14 PM
moment().subtract(3, 'days').calendar();  // Last Thursday at 1:14 PM
moment().subtract(1, 'days').calendar();  // Yesterday at 1:14 PM
moment().calendar();                      // Today at 1:14 PM
moment().add(1, 'days').calendar();       // Tomorrow at 1:14 PM
moment().add(3, 'days').calendar();       // Wednesday at 1:14 PM
moment().add(10, 'days').calendar();      // 10/11/2017
Run Code Online (Sandbox Code Playgroud)

java jodatime date-difference momentjs

3
推荐指数
1
解决办法
8606
查看次数

SQL Server LAG() 函数计算行之间的差异

我是 SQL Server 的新手,我对 lag() 函数有一些疑问。我必须计算两个用户活动之间的平均距离(以天为单位)。然后,我必须对所有用户进行 GROUP BY,计算每个用户行之间的所有日期差异,最后选择该组的平均值。

为了清楚起见,我有这样的表格: 原表


首先,我必须过滤活动天数(活动!=0)。然后我必须创建这个:

计算行之间的差异

最后,预期的结果是这样的:

我想要的是

我认为这可能是一种“某种”代码:

select userid, avg(diff)
  (SELECT *,DATEDIFF(day, Lag(dateid, 1) OVER(ORDER BY [Userid]), 
   dateid) as diff
   FROM table1
   where activities!=0
   group by userid) t
group by userid
Run Code Online (Sandbox Code Playgroud)

当然是行不通的。我想我还必须做一个 while 循环,因为每个用户的 rownumber 都会发生变化。

我希望你能帮助我!非常感谢您

sql sql-server datediff lag date-difference

3
推荐指数
1
解决办法
6897
查看次数