質問
また、追加1秒を刻んで試験を基盤として構築され、多くのページング.とを願ってい取得日からのAPIの応答変換の日付文字列を日付に変換して、それをミリ秒単位、秒に変換して戻し、datestringで次回のこのAPIです。(音longwinded?いい感じです!)
んと行ってみて解析して、dateTime.以下のコードは捨てエラー:
def c= new date().parse("yyyy-mm-ddThh:mm:ss",lastDate)
log.info "new formatt"+lastDate
log.info c.timeInMillis
エラー:groovy.lang.MissingMethodException:な署名方式:java.util.ます。parse()の適用のための引数の型:(java.lang.文字列、groovy.util.slurpersupport.NodeChildren)値:[yyyy-mm-ddThh:mm:ss,2007-01-26T00:00:00]可能なソリューションparse(java.lang.文字列)を解析し(java.lang.String,java.lang.文字列),wait(),clone()、()を使用(java.util.リストgroovy.lang.閉鎖)
他のどんなコーディネートに私達成を目標としていますか。とdimwitのアプローチを考えていますか。
解決
おそらく最もconsise、依存関係のない慣用グルーヴィーなソリューション:
Date.parse( "yyyy-MM-dd'T'HH:mm:ss", text ).with { new Date( time + 1000) }
他のヒント
秒を追加する方法についてはかなりのラウンドのように聞こえます。なぜだけではなくます:
import groovy.time.TimeCategory
def lastDate = new Date()
use(TimeCategory) {
lastDate = lastDate + 1.second
}
は、より柔軟な日付文字列の解析のために、あなたはJChronicのJavaライブラリを見たいかもしれません。それは多くの異なる形式で日付を扱うことができるとのSimpleDateFormatクラスのような正確なテンプレートを持つには依存しません。ここではこれらの両方を使用した例があります:
Date.metaClass.'static'.fromString = { str ->
com.mdimension.jchronic.Chronic.parse(str).beginCalendar.time
}
def lastDate = Date.fromString("2007-01-26T00:00:00")
use (TimeCategory) {
100.times {
runTest(lastDate)
lastDate = lastDate + 1.second
}
}
は、より汎用的なJavaソリューションは、ジョダ時間のライブラリを使用することです。
//
// Dependencies
// ============
import org.joda.time.*
import org.joda.time.format.*
@Grapes([
@Grab(group='joda-time', module='joda-time', version='1.6.2')
])
//
// Main program
// ============
DateTimeFormatter psr = ISODateTimeFormat.dateTimeParser()
DateTimeFormatter fmt = ISODateTimeFormat.dateHourMinuteSecond()
DateTime inDate = psr.parseDateTime("2010-11-18T23:23:59")
println fmt.print(inDate.plusSeconds(1))
このことは、日付文字列のタイムゾーンを持つ複雑なシナリオ、例えば「:23:59 + 01 00 2010-11-18T23」を含め、書式を任意の着信と発信の日付を扱うことができます
次のを手伝ってくれました同僚 -
--import groovy.time.TimeCategory)
def aDate = lastDate.toString()
def newdate = Date.parse("yyyy-MM-dd'T'HH:mm:ss",aDate)
use(TimeCategory){
newdate = newdate+1.second
}
私が最初に時間を加え難しさのビットを持っていた - のタイプが一緒にきれいに遊んでいませんでした。
すべての回答の人々をありがとう!
くはこちらをご覧ください:
利用したいのようなもの:
def c = Calendar.instance
c.add(Calendar.SECOND, 1)
必要なものを初期化する方法について c
日付のみのリンクから異なる可能性が次に例を示します。
c = new GregorianCalendar(2009, Calendar.JULY, 22, 2, 35, 21)