Gå til innhold

Konvertering av dato format


Anbefalte innlegg

Hei!

 

Er det noen som kan hjelpe meg å lage et java program som konverterer datoer?

 

Jeg har en liste(.txt) med mange datoer. En på hver linje, i formatet 2001-01-01, og jeg ønsker å forandre dette til 01.01.2001

 

Er det noen som kan ordne dette for meg?

 

Tusen takk!

Lenke til kommentar
Videoannonse
Annonse
Den kommandoen har jeg klar, men formatet skal byttes også fra åååå.mm.dd til dd.mm.åååå

 

 

 

Har datoene alltid samme plassering i Stringene ?

 

Da kan du jo eventuelt bruke substring

 

nystr = str.substring(8,9) +str.substring(4,7)+ str.substring(0,3)

 

(antar at str = åååå.mm.dd)

 

og da skal nystr bli dd.mm.åååå om jeg ikke har gjort noe feil.

 

Hvis du trenger noe mer robust bør du nok se på regex. Ta et søk på google, mulig du kan bruke noe av følgende: http://www.devarticles.com/c/a/Java/Regular-Expressions/5/

Endret av Thorsen
Lenke til kommentar
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.IllegalFormatWidthException;
import java.util.List;

public class ErreaConverter {

private final String FILENAME;
private List<Calendar> dates;
private List<String> strings;

public ErreaConverter(String filename) {
	this.FILENAME = filename;
	parseFile();
}

private void parseFile() {
	dates = new ArrayList<Calendar>();
	try {
		FileReader fr = new FileReader(FILENAME);
		BufferedReader br = new BufferedReader(fr);
		String tmp = null;
		while ((tmp = br.readLine()) != null) {
			String[] date = tmp.trim().split("-");
			if (date.length != 3) {
				throw new IllegalFormatWidthException(date.length);
			}
			int year = Integer.parseInt(date[0]);
			int month = Integer.parseInt(date[1]) - 1;
			int day = Integer.parseInt(date[2]);
			dates.add(new GregorianCalendar(year, month, day));
		}
		br.close();
		fr.close();
	} catch (NumberFormatException e) {
		e.printStackTrace();
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

public void printDates() {
	for (String s : getDatesAsStrings()) {
		System.out.println(s);
	}
}

public List<String> getDatesAsStrings() {
	if (strings == null) {
		strings = new ArrayList<String>(dates.size());
		for (Calendar c : getDates()) {
			strings.add(String.format("%02d.%02d.%02d", c
					.get(Calendar.DATE), (c.get(Calendar.MONTH) + 1), c
					.get(Calendar.YEAR)));
		}
	}
	return strings;
}

public List<Calendar> getDates() {
	return dates;
}

public static void main(String[] args) {
	new ErreaConverter("dates.txt").printDates();
}
}

Endret av pgdx
Lenke til kommentar

Sant nok, nå laget jo jeg et rammeverk hvor man kunne gjøre litt mer med datoene enn bare å flytte tallene frem og tilbake, men strengt tatt kan man gjøre det på færre linjer, som noe ala dette:

public void printFile(String filename) throws Exception {
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String tmp = "";
while ((tmp = br.readLine()) != null) {
	System.out.println(tmp.split("-")[2] + "." + tmp.split("-")[1] + "." + tmp.split("-")[0]);
}

Lenke til kommentar

Ved bruk av SimpleDateFormat kan man gjøre det på følgende måte:

 

import java.text.SimpleDateFormat;
import java.util.Date;

public class DatoTest {

private SimpleDateFormat output = new SimpleDateFormat("dd.MM.yyyy");
private SimpleDateFormat input = new SimpleDateFormat("yyyy-mm-dd");
private String preDato = "2001-01-01";

private void formaterDato()throws Exception{
	System.out.println("preDato: " + preDato);
	Date inputAsDate = input.parse(preDato);
	System.out.println("PostDate: " + output.format(inputAsDate));
}

public static void main(String[] args) throws Exception{
	new DatoTest().formaterDato();
}

}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...