Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με DateTime

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος AlKiS στις 08-07-2012, 19:10. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-07-2012, 23:59 70790

    Πρόβλημα με DateTime

    Καλησπέρα,

    κάνω ένα πρόγραμμα και διαβάζει ημερομηνίες από ένα αρχείο και τις περνά σε μια βάση δεδομένων..

    ωστόσο επειδή δεν θέλω να έχω σε άλλο πεδίο την ημερομηνία και σε άλλο την ώρα, είπα να τα ενώσω.. και τώρα μου βγάζει το εξής πρόβλημα "String was not recognized as a valid DateTime."


    Ο κώδικας είναι ο εξής:

    1
     
    dsNewRow.Item(glbProdProductDateTime) = Convert.ToDateTime(ProductDateTime(3), CultureInfo.InvariantCulture)

    Και μέσα στη μεταβλητή ProductDateTime(3) υπάρχει το εξής string: "24/8/11 14:06"

    Δωκήμασα διάφορους τρόπου πιο πριν, συμπεριλαμβανομένων και κάποιων που έπερναν validation string όπως:

    1
     
    DateTime.ParseExact(ProductDateTime(3), "DD/MM/YY hh:mm", CultureInfo.InvariantCulture)

    όμως κανένα δεν δουλεύει... όλα failάρουν με το ίδιο πρόβλημα... "δεν αναγνωρίζεται ως έγκυρο"..


    Αυτό που θέλω να πετύχω είναι να γίνεται η αντιστοίχηση του string " 24/8/11 14:06" (και οποιουδήποτε παρόμοιου) σε ένα DateTime με μορφή "DD/MM/YY hh:mm". Και αυτό να γίνεται άσχετα με το αν ο άλλος έχει ελληνικό λειτουργικό, αγγλικό ή σουηδικό.. να ισχύει πάντα η μετατροπή ως "DD/MM/YY hh:mm"


  •  06-07-2012, 16:11 70792 σε απάντηση της 70790

    Απ: Πρόβλημα με DateTime

    δεν ξέρω αν είναι 100% σωστό, σε εμένα αυτό δούλεψε:

    DateTime lastDt = new DateTime();

    CR_Date = "01/01/2010"

    CR_Time = "11:55"

    lastDtStr =  CR_Date + " " + CR_Time;

    lastDt = Convert.ToDateTime(lastDtStr);

     

  •  06-07-2012, 18:42 70796 σε απάντηση της 70790

    Απ: Πρόβλημα με DateTime

    Το format που περνάς ως παράμετρο στην ParseExact θα πρέπει να είναι στην ίδια μορφή με το string Δηλαδή:

    "24/8/11 14:06" = "d/M/y H:mm" ή "dd/M/yy H:mm" αν έχεις το 0 μπροστά.

     

  •  06-07-2012, 22:00 70799 σε απάντηση της 70792

    Απ: Πρόβλημα με DateTime

    evagelos:

    δεν ξέρω αν είναι 100% σωστό, σε εμένα αυτό δούλεψε:

    DateTime lastDt = new DateTime();

    CR_Date = "01/01/2010"

    CR_Time = "11:55"

    lastDtStr =  CR_Date + " " + CR_Time;

    lastDt = Convert.ToDateTime(lastDtStr);


    το θέμα είναι ότι αυτό μπορεί να δουλέψει σε εμένα, αλλά δεν θα δουλέψει σωστά σε κάποιον άλλο που έχει άλλη γλώσσα (τώρα το 1/1 σωστά θα το βγάλει, αλλά σκέψου ότι το 1/2 μπορεί να σημαίνει 1η Φεβρουαρίου ή 2 ιανουαρίου)


  •  06-07-2012, 22:01 70800 σε απάντηση της 70796

    Απ: Πρόβλημα με DateTime

    Libra Storm:

    Το format που περνάς ως παράμετρο στην ParseExact θα πρέπει να είναι στην ίδια μορφή με το string Δηλαδή:

    "24/8/11 14:06" = "d/M/y H:mm" ή "dd/M/yy H:mm" αν έχεις το 0 μπροστά.

     


    Του το δίνω ακριβώς έτσι όπως το έχω στο "dd/M/yy H:mm" (το έλεγξα), και αυτό το κάνω έτσι:

    1
     
    ProductDateTime(3) = String.Format("{0:D2}/{1:D2}/{2:D2} {3:D2}:{4:D2}", ProductDateTime(0), ProductDateTime(1), ProductDateTime(2), Mid(strReceiptFile(y), 12, 2), Mid(strReceiptFile(y), 15, 2))

    Με αυτόν τον τρόπο αν είναι μονοψήφιος ο αριθμός, του προσθέτει ένα 0 και γίνεται διψήφιος. Όμως πάλι το ίδιο πρόβλημα


    1
    2
     
                                                MsgBox(ProductDateTime(3))
                                                dsNewRow.Item(glbProdProductDateTime) = DateTime.ParseExact(ProductDateTime(3), "DD/MM/YY hh:mm", CultureInfo.InvariantCulture)
    το msgbox αυτό μου βγάζει μήνυμα "01/08/11 06:55"

    και μετά που πάει να περάσει την ημερομηνία, μου βγάζει πρόβλημα: String was not recognized as a valid DateTime.


    Μια χαρά έγκυρο DateTime δεν είναι? Τι θέλει για να δουλέψει?


  •  06-07-2012, 22:22 70801 σε απάντηση της 70800

    Απ: Πρόβλημα με DateTime

    Βασικά τα κατάφερα! Είναι ηλίθιο βασικά, ΤΕΡΜΑ καθυστερημένο όμως!

    Για να δουλέψει ήθελε τελείες αντί για καθέτους.. αυτό, τπτ άλλο, δουλεύει...


    Έχω πρόβλημα όμως με το να κάνω compact μέσω προγραμματισμού Access 2007/2010 αρχείο (.accdb) ..


    αλλά θα κάνω νέο thread για αυτό (τώρα βασικά).


  •  07-07-2012, 16:31 70806 σε απάντηση της 70800

    Απ: Πρόβλημα με DateTime

    Εφόσον σου βγάζει σε όλες τις περιπτώσεις το σωστό αποτέλεσμα θα πρέπει να φτιάξεις το format έτσι ώστε να κάνει σωστά την μετατροπή.

    MessageBox.Show(DateTime.ParseExact("01/08/11 06:55", "dd/MM/yy HH:mm", Globalization.CultureInfo.InvariantCulture).ToString())

    άλλο παράδειγμα:

    MessageBox.Show(DateTime.ParseExact("01/08/11 06:55:14 πμ", "dd/MM/yy hh:mm:ss tt", Globalization.CultureInfo.CreateSpecificCulture("el-GR")).ToString())

    Και όχι "DD/MM/YY hh:mm" που χρησιμοποιείς.

    Το DateTime είναι μεν έγκυρο αλλά το format που πρέπει να περάσεις ως παράμετρο γιά να το περιγράψεις και όχι να το μετατρέψεις δεν είναι σωστό.

    Έπίσης η παράμετρος format είναι case sensitive, άλλο το h και άλλο το Η. Το DD δεν ξέρω τι κάνει.

    Μπορείς ακόμα να περάσεις και array από formats σε περίπτωση που τα δεδομένα δεν έχουν την ίδια μορφή.

    http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspxhttp://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

     

     

     

     

  •  08-07-2012, 19:10 70811 σε απάντηση της 70806

    Απ: Πρόβλημα με DateTime

    αχά,

    κατάλαβα.. παρόλαυτα έχει θέμα με τις καθέτους. Το ίδιο ακριβώς πράγμα που δουλεύει με τελείες, αν αλλάξεις τις τελείες σε καθέτους (και στα 2) δεν δουλεύει.


    anyway, το κατάλαβα πάντως τώρα, όλα καλά :)


Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems