Duration Value

turmaline

Bekanntes Mitglied
Hallo Leute,

ich möchte als Parameter einen Duration Value angeben können, z.B.:

1Y2M5D12H10S (bzw. gibt es evtl. ein bestimmtes Format dafür?)

Wie parse ich dann den String und wandele ihn in ein Date() um? Gibt es dafür bestimmte Klassen?
Habe bis jetzt nur javax.xml.datatype.Duration gefunden, bin mir aber nicht sicher, dass es das richtige für mich ist.

Kann mir da jemand helfen?

Danke und Gruß,
Madlena
 

faetzminator

Gesperrter Benutzer
[c]SimpleDateFormat[/c] würde sich da sicher eignen. Warum du da auch immer ein Date willst...
Folgender Code ist ungetestet:
Java:
String str = "1Y2M5D12H10S";
SimpleDateFormat sdf = new SimpleDateFormat("y'Y'M'M'd'D'HH'H'ss'S'");
Date d = sdf.parse(str);
 

jgh

Top Contributor
mit SimpleDateFormat geht es ja scheinbar auch...ich würde mir allerdings kurz mal eine eigene Klasse schreiben.
ExceptionHandling müsstest du dir halt noch überlegen.

Java:
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DurationValue {
	private int year;
	private int month;
	private int hour;
	private int day;
	private int min;
	private int sec;
	private String value;

	public DurationValue(String value) throws Exception {
		this.value = value;
		fillValues();
	}

	private void fillValues() throws Exception {
		StringBuffer sb = new StringBuffer(value);
		int pointer = 0;
		for (int i = 0; i < sb.length(); i++) {
			if (sb.charAt(i) == 'Y') {
				year = parseCharToInt(value.substring(pointer, i));
				pointer = i + 1;
			} else if (sb.charAt(i) == 'M') {
				month = parseCharToInt(value.substring(pointer, i));
				pointer = i + 1;
			} else if (sb.charAt(i) == 'D') {
				day = parseCharToInt(value.substring(pointer, i));
				pointer = i + 1;
			} else if (sb.charAt(i) == 'H') {
				hour = parseCharToInt(value.substring(pointer, i));
				pointer = i + 1;
			} else if (sb.charAt(i) == 'M') {
				min = parseCharToInt(value.substring(pointer, i));
				pointer = i + 1;
			} else if (sb.charAt(i) == 'S') {
				sec = parseCharToInt(value.substring(pointer, i));
				pointer = i + 1;
			}
		}
	}

	private int parseCharToInt(String substring) throws NumberFormatException {
		int out = Integer.parseInt(substring);
		return out;
	}

	private Date getTodayPlusDuration() {
		Calendar cal = new GregorianCalendar();
		// hier addiere ich nur mal die jahre, monate und tage
		cal.add(Calendar.YEAR, year);
		cal.add(Calendar.MONTH, month);
		cal.add(Calendar.DAY_OF_YEAR, day);

		return cal.getTime();
	}

	private Date getTodayMinusDuration() {
		return null;
	}

	public int getHour() {
		return hour;
	}

	public int getMonth() {
		return month;
	}

	public int getYear() {
		return year;
	}

	public int getDay() {
		return day;
	}

	public int getSec() {
		return sec;
	}

	public int getMin() {
		return min;
	}

	public static void main(String[] args) {
		try {
			DurationValue dv = new DurationValue("1Y4M15D22H52S");
			System.out.println(dv.getYear());
			System.out.println(dv.getMonth());
			System.out.println(dv.getDay());
			System.out.println(dv.getHour());
			System.out.println(dv.getMin());
			System.out.println(dv.getSec());
			System.out.println(dv.getTodayPlusDuration());

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
 

turmaline

Bekanntes Mitglied
Danke für die Antorten!

Hm.. mit SimpleDateFormat geht es glaube ich nicht.

Es geht dabei darum, dass der Benutzer eine Dauer angeben kann, innerhalb welcher er die letzten Updates sehen möchte. Beispielsweise in den letzten 24 Stunden (24H) oder im letzten Jahr (1J) usw. Das muss also flexibel sein, ober er Jahr, Monate usw eingeben will, bleibt ihm überlassen.

Vielleicht wäre das mit der eigenen Klasse doch richtiger oder gibt es da Alternativen?

Gruß,
Maldena
 

faetzminator

Gesperrter Benutzer
Je nach dem wie man die Daten braucht, könnte man das ganze auch mit einem Enum (für die Keys) und einer Map lösen, die generische Lösung zu jghs Ansatz. Sowas wie in Jodas Date/Time Lib [c]DateTime#public int get(DateTimeFieldType type)[/c]
 

turmaline

Bekanntes Mitglied
und dann gibt der Benutzer: 1Y22MY usw ein?
ist das ne Website, oder ne Application, eine Conolenanwendung...evtl. kannst du dir ja den JCalendar nutzen?

das ist ein "Connector" zu einem Externen Tool, wird aus einer Console angefragt. Es gibt keinen Benutzer im eigentlichen Sinne. Beim Aufruf vom Connector kann man ihm sagen:

gib mir Updates
oder
gib mir Updates des letzten Tages.

JCalender? Muss ich schauen was er für Funktionalitäten hat.

Gibt es eigentlich ein allgemeines Format (bei Eingabe) für so einen Duration Value?

Gruß,
Madlena
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B java.time Duration mit Kommazahl? Java Basics - Anfänger-Themen 4
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
J Java call by Value oder Reference Java Basics - Anfänger-Themen 35
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
D String value change listener Java Basics - Anfänger-Themen 2
G Java Object value und entity? Java Basics - Anfänger-Themen 2
ms_cikar Den Wert einer Hex. value bestimmten. Java Basics - Anfänger-Themen 8
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
F Entity vs value Java Basics - Anfänger-Themen 3
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
R Value von einem JSON-Objekt ausgeben Java Basics - Anfänger-Themen 4
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
E Hash map Value Wert hochzuholen/ändern Java Basics - Anfänger-Themen 7
J Variablen Komsiche System.in.read() return-value? Java Basics - Anfänger-Themen 3
N JFreeChart - Value und veriable Zeitachse Java Basics - Anfänger-Themen 15
J Open Office Property Value mit Java aufrufen Java Basics - Anfänger-Themen 0
H call by reference & value Java Basics - Anfänger-Themen 14
R Property Value als null setzen Java Basics - Anfänger-Themen 1
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
B Compiler-Fehler Hilfe!!! required variable ; found value Java Basics - Anfänger-Themen 4
M Arrays als return Value? Java Basics - Anfänger-Themen 2
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
T Schleifenindex "by reference" / "by value" Java Basics - Anfänger-Themen 13
V Methoden key value Parameter Java Basics - Anfänger-Themen 11
C Probleme bei einem Stringvergleich - Attribut "value" unterscheidet sich Java Basics - Anfänger-Themen 9
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
B Call by Value/Reference Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
B Variablen unique Value Java Basics - Anfänger-Themen 12
R Key/Value ohne Maps? Java Basics - Anfänger-Themen 2
B Datentypen Key/Value sortieren Java Basics - Anfänger-Themen 15
S Warnung in Eclipse: unassigned closeable value Java Basics - Anfänger-Themen 20
J Objectreferenz statt value an Methode uebergeben? Java Basics - Anfänger-Themen 2
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
P Key anhand von Value finden (Hashtable) Java Basics - Anfänger-Themen 3
B JavaSkript Form-Tag Value & Post Java Basics - Anfänger-Themen 6
M String( char[] value ) Java Basics - Anfänger-Themen 3
feardorcha Java von Kopf bis Fuß "Java ist Pass-by-Value" Java Basics - Anfänger-Themen 6
M Value-returing Methode funktioniert nicht Java Basics - Anfänger-Themen 4
O Was bedeutet public class value? Java Basics - Anfänger-Themen 3
M jSpinner: nur angezeigte Value auslesen? Java Basics - Anfänger-Themen 3
F Erste Schritte return (char)toUnsignedInt(value) Java Basics - Anfänger-Themen 2
J unexpected type variable/value Java Basics - Anfänger-Themen 2
F Hilfe Regular Expression Grouping Value Java Basics - Anfänger-Themen 3
K unexpected type variable/value Java Basics - Anfänger-Themen 7
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
K java pass by value Java Basics - Anfänger-Themen 29
capgeti Datentypen Static generic return value von Subclass? Java Basics - Anfänger-Themen 9
A ein map key/value"problem" Java Basics - Anfänger-Themen 9
A Regex get Value Java Basics - Anfänger-Themen 5
D Key und Value aus hashMap speichern Java Basics - Anfänger-Themen 7
M HashMap-Value | Array Java Basics - Anfänger-Themen 3
N Methode erfüllt nicht den zweck (Call by value) Java Basics - Anfänger-Themen 17
0 Call by value Java Basics - Anfänger-Themen 3
H TreeMap.remove(value) - und nicht mit key! Geht das? Java Basics - Anfänger-Themen 18
H Abhängigkeiten (key-value ) Java Basics - Anfänger-Themen 19
P Value einer Konstante lesen Java Basics - Anfänger-Themen 2
lumo Magic Value?! Java Basics - Anfänger-Themen 19
S HashMap: Rückgabe des key zu bestimmten value Java Basics - Anfänger-Themen 3
K Maps mit veränderlichen Daten als Value Objekte Java Basics - Anfänger-Themen 3
D Hashtable Value(Array) in String und dann Ausgeben Java Basics - Anfänger-Themen 23
? key - value Struktur in ArrayList Java Basics - Anfänger-Themen 3
G Container für [key,value] elemente ? Java Basics - Anfänger-Themen 7
G Überprüfen ob einen Array einen Value enthält Java Basics - Anfänger-Themen 13
C Passing Reference by Value Java Basics - Anfänger-Themen 4
A Integer Value Error beim Start Java Basics - Anfänger-Themen 5
G jProgressBar value aus anderer Klasse heraus verändern Java Basics - Anfänger-Themen 7
F Hashtable mit String[] als value Java Basics - Anfänger-Themen 2
L HashMap Key<->Value vertauschen Java Basics - Anfänger-Themen 5
T Klasse String enthält Methode value? Java Basics - Anfänger-Themen 2
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
S Value von ein Hashtable collectionen Java Basics - Anfänger-Themen 3
S Value sortieren Java Basics - Anfänger-Themen 3
D Map (HashMap) sortiern nach den Value? Java Basics - Anfänger-Themen 16
W Hashtable Integer als Value Java Basics - Anfänger-Themen 6
M value von Komponenten erhalten Java Basics - Anfänger-Themen 3
G TreeMap sortieren über ArrayList als Value Java Basics - Anfänger-Themen 9
L Value aus einer Map holen Java Basics - Anfänger-Themen 10
R kleinster Value in HashMap Java Basics - Anfänger-Themen 12
H HashMap initialisieren<Key, Value>? Java Basics - Anfänger-Themen 9
B map value auslesen Java Basics - Anfänger-Themen 2
V Beginner question with check true value??? Java Basics - Anfänger-Themen 3
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben