2017-09-19 1 views
-3

Mates,conversion Date de valeur lue à partir d'Excel en Java

J'ai un objet Date qui se rempli avec une valeur après la lecture d'un excel

Date mydate = cell.getDateCellValue(); 
valeur

chargée est * "Sam 9 janvier 00:00:00 IST 2016 "

Je ne sais pas pourquoi cette valeur de format est donnée à partir d'Excel bien qu'elle soit affichée sur un format différent dans Excel. Je veux convertir ce format en format dd-mm-yyyy. Comment cela peut-il être fait?

Essayé ce

String ms= "Sat Jan 09 00:00:00 IST 2016" ; 
      SimpleDateFormat formater = new SimpleDateFormat("mm-dd-yy");  
      Date result = formater.parse(ms); 
      System.out.println(result); 

mais donne une sortie identique à l'entrée.

+0

'mar 19 septembre 13:52:47 CEST 2017' est le ouput pour' System.out.println (new Date()); 'vous ne pouvez donc formater la sortie, mais pas comment la date a été enregistrée – XtremeBaumer

+0

Vous essayez d'analyser la chaîne "Sat Jan 09 00:00:00 IST 2016", en utilisant le modèle "mm-jj-aa". Comment cela pourrait-il fonctionner?Pourquoi essayez-vous d'analyser une chaîne en une date, puisque getDateCellValue() renvoie déjà un objet Date, que vous avez simplement besoin de formater comme vous le souhaitez? parsing = Chaîne à date. Formatage = Date en chaîne. –

+1

Aussi «mm-jj-aa» est «minutes-jour-année» – XtremeBaumer

Répondre

0

Vous devez créer votre propre classe Date et remplacer toString avec le format que vous voulez qu'il revienne #ApachePOI

public class CustomDate extends Date 
{ 

public CustomDate(String string) 
{ 
    super(string); 
} 

@Override 
public String toString() 
{ 
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
    String format = formatter.format(this); 

    return format; 
} 
} 

Et la principale méthode

public static void main(String[] args) 
{ 
    Date date = new Date("Sat Dec 01 00:00:00 GMT 2012"); 
    String dateString = date.toString(); 

    CustomDate customDate = new CustomDate(dateString); 

    System.out.println(dateString); 
    System.out.println(customDate.toString()); 
} 

Utilisez le format que vous voulez à l'intérieur de votre méthode toString

+0

Merci vanja – mandan

0

Ne confondez pas un objet date-heure avec du texte qui représente sa valeur. Un java.util.Date n'a pas de "format". Vous voyez du texte généré par la méthode toString de cet objet. Ce texte n'existe pas à l'intérieur de l'objet. Cette classe 'toString se trouve, en appliquant le fuseau horaire par défaut actuel de la JVM à la valeur UTC réellement stockée à l'intérieur. Une des nombreuses raisons d'éviter complètement cette classe.

Cette classe Date fait partie des anciennes classes de date-heure problématiques qui sont désormais héritées, remplacées par les classes java.time.

Convertissez votre objet java.util.Date en Instant.

Dans Java 8 et versions ultérieures, recherchez les nouvelles méthodes de conversion ajoutées aux anciennes classes. Pour Java 6, vous utiliserez le projet ThreeTen-Backport. Vous y trouverez une DateTimeUtil classes offrant des méthodes de conversion.

De notre Instant, nous pouvons obtenir une date. Mais d'abord nous devons appliquer un fuseau horaire pour déplacer ce Instant d'UTC à la zone par laquelle vous voulez percevoir la date. Pour un moment donné, la date varie autour du globe par zone.

ZoneId z = ZoneId.of("Pacific/Auckland") ; 
ZonedDateTime zdt = instant.atZone(z) ; 

Générez une chaîne à l'aide d'un DateTimeFormatter.

DateTimeFormatter f = DateTimeFormatter.ofPattern("dd -MM-uuuu" , Locale.US) ; 
String output = zdt.format(f) ; 
+0

Merci pour les entrées Basil – mandan