closed
Goto Top

DateManip von Perl für Java

Servus,

vorab: gegoogelt wurde bereits ;)

Bin recht neu in Java und suche nach einer Methode/Klasse/etc. der ich einen String (der ein Datum repräsentiert) übergeben kann, und die mir immer dann ein standardisiertes Datum returned.
Hab mir in Java bereits angeschaut: Calendar, GregorianCalendar, SimpleDateFormat, Date, aber keines davon erfüllt seinen Zweck.

Das Problem an der Sache ist nämlich, dass ich nicht weiß, wie das Datum ausschaut. Ich rufe unterschiedliche Quellen ab und möchte möglichst flexibel bleiben. Dabei muss die Funktion sowohl das europäische, als auch das amerikanische Datumsformat richtig interpretieren können.

BeispielStrings:

2010-1-16 14:32:53
Tue, 16 Feb 2010 14:32:53 GMT
Tue 02:32:53 AM 16.02.2010

Das Problem an den Java Klassen ist, dass ich vorab wissen muss, an welcher Stelle der Tag, der Monat, etc. zu finden sind.

Ein in Perl programmiertes Skript, welches die DateManip Bilbl. benutzt erledigt dies ohne weiteres. Ich vermute, dass es auch in Java möglich ist, dies zu erledigen, aber ich finde nicht heraus wie genau.

Perl Skript:

use DateTime::Format::DateManip;
use Date::Manip;

if(@ARGV != 1) {
	if(@ARGV < 1){
		die "One parameter is required!\n";  
	} else {
		die "Only one command line parameter is accepted!\n";  
	}
	die "Usage: date.pl [date]\n";  
}

my $date = $ARGV;	

my $dt = DateTime::Format::DateManip->parse_datetime
             ($date);
my $dm = DateTime::Format::DateManip->format_datetime($dt);

print $dm;

Besten Dank vorab

Content-Key: 136617

Url: https://administrator.de/contentid/136617

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: Closed
Closed 16.03.2010 um 15:58:15 Uhr
Goto Top
folgende funktion und joda (http://joda-time.sourceforge.net/) konnten helfen:

	public static String convertDateTime(String regex, String date, String dateFormat, String locale)throws DateException{
		
		if(date!=null && !date.isEmpty()){
			DateTimeFormatter fmt = DateTimeFormat.forPattern(dateFormat).withLocale(new Locale(locale));
			Pattern p = Pattern.compile(regex);
			Matcher m = p.matcher(date);
			DateTime dt = new DateTime(DateTimeZone.UTC);
			String dummy="";  
	
			if(m.matches()){
		   	for(int i=1; i<=m.groupCount(); i++){
		   		dummy += m.group(i);
		   	}
				dt = fmt.parseDateTime(dummy);
			}else{
				throw new DateException("Could not find a date in the string!");  
			}
			return dt.toString("yyyy-MM-dd HH:mm:ss");  
		}else{
			DateTime dt = new DateTime(DateTimeZone.UTC);
			return dt.toString("yyyy-MM-dd HH:mm:ss");  
		}
	}