小编Fil*_*lip的帖子

2个java.util.Date之间的月数,不包括日期

我想要2个月之间的java.util.Date月数,而不计算月份的日期.所以我只想比较年份和月份.

例:

 monthsBetween(new Date(2012,01,28), new Date(2012,02,01)) ---> 1

 monthsBetween(new Date(2012,02,27), new Date(2012,02,28)) ---> 0

 monthsBetween(new Date(2012,03,28), new Date(2012,07,01)) ---> 4
Run Code Online (Sandbox Code Playgroud)

我试过这个(返回0,预期1),使用Joda-time:

private static int monthsBetween(final Date fromDate, final Date toDate) {
    DateTime date1 = new DateTime().withDate(2012, 1, 20);
    DateTime date2 = new DateTime().withDate(2012, 2, 13);
    PeriodType monthDay = PeriodType.yearDayTime().withDaysRemoved();
    Period difference = new Period(date1, date2, monthDay);
    int months = difference.getMonths();

    return months;
 }
Run Code Online (Sandbox Code Playgroud)

而且这个(相同的结果),使用Joda-time:

private static int monthsBetween(final Date fromDate, final Date toDate) {
        return Months.monthsBetween(new DateTime(fromDate), new …
Run Code Online (Sandbox Code Playgroud)

java date jodatime

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

使用 FOR JSON 时获取值数组而不是对象数组

我正在尝试展平由 构造的对象数组FOR JSON

我的查询如下所示:

select 
(                           
    select id from MyTable
    where id in (select value from OPENJSON(@jsonArray))
    FOR JSON PATH
) existing,                 
(   
    select value id from OPENJSON(@jsonArray) 
    where value not in (select Id from MyTable)
    FOR JSON PATH                       
) missing
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
Run Code Online (Sandbox Code Playgroud)

生成的 JSON 为:

{
    "existing": [
        {
            "id": "a00cd8f6-d1c6-4604-b235-59d3cacd5bcc"
        },
        {
            "id": "052455b6-6bf5-47d3-8bee-7ba98d7fbd50"
        }
    ],
    "missing": [
        {
            "id": "328add2d-e8f2-4a0e-af54-5b1733310170"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{
    "existing": [
        {
            "id": "a00cd8f6-d1c6-4604-b235-59d3cacd5bcc"
        },
        {
            "id": …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server json for-json

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

在Joda Time获取一年中第一周的第一天的日期

我有一个Java日期:tempDate = Sun Jan 01 00:00:00 GMT + 01:00 2012.

我想创建一个新的日期,即tempDate年份第一周的第一天.

那是:

  Mon Jan 02 00:00:00 GMT+01:00 2012
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Joda时间时:

DateTime cal = new DateTime(tempDate).withWeekOfWeekyear(1).
                     withDayOfWeek(DateTimeConstants.MONDAY);
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的,但在前一年:

Mon Jan 03 00:00:00 GMT+01:00 2011
Run Code Online (Sandbox Code Playgroud)

我如何在Joda Time中完成这项工作?

java datetime jodatime

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

标签 统计

java ×2

jodatime ×2

date ×1

datetime ×1

for-json ×1

json ×1

sql ×1

sql-server ×1

t-sql ×1