1

日を無視してGroovyで日付を比較するにはどうすればよいですか? このようなもの: *MM-yyyy_1 > MM-yyyy_2*

4

2 に答える 2

2

あなたはこれを行うことができます:

int compareIgnoringDays( Date a, Date b ) {
  new Date( a.time ).with { newa ->
    new Date( b.time ).with { newb ->
      newa.set( date:1 )
      newb.set( date:1 )
      newa.compareTo( newb )
    }
  }
}

次のようにテストできます:

Date a = Date.parse( 'yyyy/MM/dd', '2012/05/23' )
Date b = Date.parse( 'yyyy/MM/dd', '2012/05/24' )
Date c = Date.parse( 'yyyy/MM/dd', '2012/06/01' )

assert compareIgnoringDays( a, b ) == 0
assert compareIgnoringDays( b, a ) == 0
assert compareIgnoringDays( a, c ) == -1
assert compareIgnoringDays( c, a ) == 1

同じ機能を別の方法で記述すると、次のようになります。

int compareIgnoringDays( Date a, Date b ) {
  [ a, b ].collect { new Date( it.time ) }   // Clone original dates
          .collect { it.set( date:1 ) ; it } // Set clones to 1st of the month
          .with { newa, newb ->
            newa.compareTo( newb )           // Compare them (this gets returned)
          }
}
于 2012-05-23T09:00:03.373 に答える
1

次のように 2 つの日付を比較できます。

def myFormat = 'MM/dd/yyyy'
if(Date.parse(myFormat, '02/03/2012') >= Date.parse(myFormat, '03/02/2012))
{...}
于 2012-05-23T09:02:50.427 に答える