我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子.我也知道JodaTime库,但我想要一种没有外部库的工作方式.
功能需要抱怨这些限制:
我想知道是否有一些新的和令人敬畏的可能性来获得Swift /"新"可可中两个NSDates之间的天数?
就像在Ruby中我会这样做:
(end_date - start_date).to_i
Run Code Online (Sandbox Code Playgroud) 我想从'B'中的日期中减去'A'中的日期,并添加一个带有差异的新列.
df
A B
one 2014-01-01 2014-02-28
two 2014-02-03 2014-03-01
Run Code Online (Sandbox Code Playgroud)
我尝试了以下内容,但是当我尝试将其包含在for循环中时出现错误...
import datetime
date1=df['A'][0]
date2=df['B'][0]
mdate1 = datetime.datetime.strptime(date1, "%Y-%m-%d").date()
rdate1 = datetime.datetime.strptime(date2, "%Y-%m-%d").date()
delta = (mdate1 - rdate1).days
print delta
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我正在寻找一个计算两个日期之间的月份的解决方案.我认为joda或java8时间可以做到.但是当我比较它们时,我发现了一些非常奇怪的东西.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import org.joda.time.Months;
public class DateMain {
public static void main(String[] args) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date d1 = simpleDateFormat.parse("2017-01-28 00:00:00.000");
Date d2 = simpleDateFormat.parse("2017-02-28 00:00:00.000");
System.out.println("Test Cast 1");
System.out.println("joda time api result: " + monthsBetweenJoda(d1, d2) + " month");
System.out.println("java8 time api result: " + monthsBetweenJava8(d1, d2) + " month");
Date dd1 = simpleDateFormat.parse("2017-01-29 00:00:00.000");
Date dd2 = simpleDateFormat.parse("2017-02-28 00:00:00.000");
System.out.println("Test Cast …
Run Code Online (Sandbox Code Playgroud) 我有以下查询:
select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Run Code Online (Sandbox Code Playgroud)
当我执行此操作时,我收到错误:"datediff函数导致溢出.分隔两个日期/时间实例的日期部分的数量太大.尝试使用具有不太精确的日期部分的datediff."
当我将查询更改为以下时,它工作正常:
select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Run Code Online (Sandbox Code Playgroud)
问题是我真的需要MILLISECONDS.
下面的查询是我的sql server查询,我希望它将其转换为hive查询:
select DATEDIFF([minute], '19000101', '2013-01-01 10:10:10')
Run Code Online (Sandbox Code Playgroud) 我有一个ArrayList
包括几个时间戳的目标是找到第一个和最后一个元素的差异ArrayList
.
String a = ArrayList.get(0);
String b = ArrayList.get(ArrayList.size()-1);
long diff = b.getTime() - a.getTime();
Run Code Online (Sandbox Code Playgroud)
我也将类型转换为int但仍然给我一个错误The method getTime is undefined for the type String
.
附加信息 :
我有一个A类,其中包括
String timeStamp = new SimpleDateFormat("ss S").format(new Date());
Run Code Online (Sandbox Code Playgroud)
并且有一个B类有一个方法 private void dialogDuration(String timeStamp)
和dialogueDuration
方法包括:
String a = timeSt.get(0); // timeSt is an ArrayList which includes all the timeStamps
String b = timeSt.get(timeSt.size()-1); // This method aims finding the difference of the first and the last elements(timestamps) …
Run Code Online (Sandbox Code Playgroud) 我有两个LocalDate
声明如下:
val startDate = LocalDate.of(2019, 10, 31) // 2019-10-31
val endDate = LocalDate.of(2019, 9, 30) // 2019-09-30
Run Code Online (Sandbox Code Playgroud)
然后我使用Period.between
函数计算它们之间的周期:
val period = Period.between(startDate, endDate) // P-1M-1D
Run Code Online (Sandbox Code Playgroud)
此处的期间为负数的月份和天数,如果endDate
早于,则可以预期startDate
。
但是,当我将其添加period
回时startDate
,得到的结果不是endDate
,而是前一天的日期:
val endDate1 = startDate.plus(period) // 2019-09-29
Run Code Online (Sandbox Code Playgroud)
所以问题是,为什么不不变
startDate.plus(Period.between(startDate, endDate)) == endDate
保留这两个日期?
是Period.between
谁返回了不正确的期限,还是LocalDate.plus
谁添加了不正确的期限?
我想使用Date和Calendar类来计算java中两个日期/时间之间的差异.我的格式是"2012-01-24 12:30:00 PM".
我已经实现了我自己的方法,并且谷歌它与其他人合作,但没有得到正确的提示来处理AM和PM值.
只要时间有12(上午/下午),日期/时间差就会受到影响.例如,如果我有日期/时间"2012-01-24 12:30:00 PM"和"2012-01-24 02:30:00 PM",则显示差异为10小时.
考虑到此链接上的代码,如何修改它以处理AM和PM.
要将字符串日期转换为日期,请使用以下代码:
String sessionTimeStart = "2012-01-24 12:30:00 PM";
String sessionTimerEndOrCurrent = "2012-01-24 02:30:00 PM";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
Date d1 = null;
Date d0 = null;
try {
d1 = format.parse(sessionTimeStart);
d0 = format.parse(sessionTimerEndOrCurrent);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我想在我的数据集中创建一个新列,这是今天与数据集中已有的另一列之间的年份差异,填充了日期。
上面的代码:
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。:我想避免循环系列,我相信路径会给我一个想要的解决方案,但由于有一个大系列,我想避免这种方式。