سؤال

أنا أتطلع إلى إضافة ثانية إلى وقت واحد حتى أتمكن من اختبار ترقيم ترقيم التاريخ. آمل أن أحصل على موعد من استجابة API الخاصة بنا ، وتحويل سلسلة التاريخ إلى تاريخ ، ثم قم بتحويل ذلك إلى ميلي ثانية ، وإضافة ثانية ثم تحويلها مرة أخرى إلى بيانات واستخدامها في طلب واجهة برمجة التطبيقات التالية. (الصوت منذ فترة طويلة؟ من المؤكد أنه يبدو كما هو!)

أواجه وأصدر عندما أحاول تحليل وقت. الرمز التالي هو إلقاء خطأ:

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.date.parse () ينطبق على أنواع الوسيطة: (java.lang.string ، groovy.util.slurpersuport.nodechildren) القيم: [yyyym-mm- DDTHH: MM: SS ، 2007-01-26T00: 00: 00] الحلول الممكنة: parse (java.lang.string) ، parse (java.lang.string ، java.lang.string) ، wait () ، clone () ، أي () ، استخدام (java.util.list ، groovy.lang.closure)

أي نصائح حول كيفية تحقيق هدفي؟ أم أنه نهج قاتم؟

هل كانت مفيدة؟

المحلول

من المحتمل أن يكون الحل الأكثر إحياءًا ، من دون تبعيات:

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
    }
}

حل جافا أكثر عاما هو استخدام وقت جودا مكتبة.

//
// 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))

يمكنه التعامل مع أي تنسيق للتاريخ الوارد والصادر ، بما في ذلك السيناريوهات المعقدة مع مناطق زمنية في سلسلة التاريخ ، على سبيل المثال "2010-11-18T23: 23: 59+01: 00"

ساعد زميل في ما يلي -

--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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top