2017-11-08 16 views
1

日付時刻が格納されているgroovyパラメータに時間を追加しようとしています。SimpleDateFormatに格納されています。GroovyでSimpleDateFormatに時間を追加

import groovy.time.TimeCategory 
import java.text.SimpleDateFormat 
def testCase = messageExchange.modelItem.testCase; 
def startdatetime = testCase.testSuite.project.getPropertyValue("StartDateTime").toString(); 
log.info startdatetime 
aaa = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(startdatetime) 
use(TimeCategory) 
{ 
    def enddatetime = aaa + 5.minutes 
    log.info enddatetime 
} 

startdatetime:水曜日11月8日夜07時57分50秒IST 2017:INFO:2017-11-08T15:00:00.000Z

エラーのポップアップメッセージを表示

'解析できない日: "2017-11-08T15:00:00.000Z"'

答えて

2

日付文字列がWed Nov 08 19:57:50 IST 2017で、日付オブジェクトに変換する場合は、次のようにします。

def dateString = "Wed Nov 08 19:57:50 IST 2017" 
def dateFormat = "EEE MMM dd HH:mm:ss Z yyyy" 
def date = Date.parse(dateFormat, dateString) 

すでに

def endDate 
use(TimeCategory) { endDate = date + 5.minutes } 
log.info "End date : $endDate" 

行ったようにあなたは、フォーマットに日付オブジェクトをしたい場合は、行う行うことができますそれに5分を追加したいルックス:

def outputDateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
log.info "Formatted date: ${date.format(outputDateFormat)}" 

別のあなたのコードを見て、プロジェクトのプロパティ値を取得した後の提案、一行の下で使用してください。

変更から:

def testCase = messageExchange.modelItem.testCase; 
def startdatetime = testCase.testSuite.project.getPropertyValue("StartDateTime").toString(); 

へ:

def startDateTime = context.expand('${#Project#StartDateTime}') 
+0

回答と提案に感謝します。 – rAJ

+0

@rAJ、ようこそ。うれしいことがわかりました。 – Rao

1

代わりの"yyyy-MM-dd'T'HH:mm:ss'Z'"入力文字列にミリ秒が含まれているので、おそらく"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"が必要です。

+1

'.000' "2017-11-08T15 00.000Z:00"'の終わり近く ' 'ミリ秒です。 –

+0

この間違いを指摘してくれてありがとう。 :) – rAJ

0

私はGroovyの経験はありませんが、Javaクラスを使用できるので、現代のJavaの日時APIを使用することもできます。私はずっと古い古くなったSimpleDateFormatクラスにそれを勧めます。あなたのフォーマット2017-11-08T15:00:00.000Zは、決してSimpleDateFormatに結びついていません。それとは反対に、現代の日時クラス(古いものとは対照的に)は、明示的なフォーマッタを必要とせずにネイティブに "理解"するISO 8601です。解析する。

だから私はあなたが(テスト決して)しようと提案する:

import java.time.Instant 
import java.time.temporal,ChronoUnit 

aaa = Instant.parse(startdatetime) 

、多分(あなたがまだ必要か、Javaクラスを使用する場合)

enddatetime = aaa.plus(5, ChronoUnit.MINUTES) 
関連する問題