簡體   English   中英

在Java中解析和轉換日期格式從csv文件到mysql

[英]Parsing and converting Datetime format from csv file to mysql in Java

我有一個csv文件,其中Datetime列以“DD-MM-YYYY HH:MM”格式定義。 但問題是MySQL只接受Datetime類型為“YYYY-MM-DD HH:MM”。 我想將csv文件中給出的格式轉換為MySQL定義的格式,但我無法做到。我試圖在excel中轉​​換格式,但首先在excel中沒有日期時間格式,如果我將列拆分為2它改變了我的文件的結構,因此無法插入數據庫。因此,唯一的選擇是使用Java程序並在插入之前更改格式。 有人能在這方面給我一些幫助嗎?

這是我的類,它被調用轉換格式,但我不知道這里有什么問題,是否足夠或我遺漏了什么。(這個類是從另一個程序訪問的。)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class DateUtil {

    // List of all date formats that we want to parse.
    // Add your own format here.
    private static List<SimpleDateFormat> 
            dateFormats = new ArrayList<SimpleDateFormat>() {
        private static final long serialVersionUID = 1L; 
        {
//            add(new SimpleDateFormat("M/dd/yyyy"));
//            add(new SimpleDateFormat("dd.M.yyyy"));
//            add(new SimpleDateFormat("M/dd/yyyy hh:mm:ss a"));
//            add(new SimpleDateFormat("dd.M.yyyy hh:mm:ss a"));
//            add(new SimpleDateFormat("dd.MMM.yyyy"));
            add(new SimpleDateFormat("dd-MM-yyyy hh:mm"));
            add(new SimpleDateFormat("yyyy-MM-dd hh:mm"));
        }
    };

    /**
     * Convert String with various formats into java.util.Date
     * 
     * @param input
     *            Date as a string
     * @return java.util.Date object if input string is parsed 
     *          successfully else returns null
     */
    public static Date convertToDate(String input) {
        Date date = null;
        if(input == null ) {
            return null;
        }
        for (SimpleDateFormat format : dateFormats) {
            try {
                format.setLenient(false);
                date = format.parse(input);
            } catch (ParseException e) {
                //Shhh.. try other formats
            }
            if (date != null) {
                break;
            }
        }

        return date;
    }

}

如果我理解正確,你有一個帶有日期列的csv文件,但以“DD-MM-YYYY HH:MM”格式存儲為String,你希望它被格式化為“YYYY-MM-DD HH:MM”讓mySql開心

如果是的話,為什么不用excel來完成這項工作:

  • 在文件中添加新列,例如:

    日期DD-MM-YYYY HH:MM | 日期YYYY-MM-DD HH:MM

    01-02-2013 23:59 | 2013-02-01 23:59

新添加的列將具有此公式“= MID(A2,7,4)&” - “&MID(A2,4,2)&” - “&LEFT(A2,2)&”“&Right(A2,5)”

  • 現在,您的新列將日期存儲為所需格式的字符串,只需將列復制到記事本,然后從記事本復制回粘貼到第一列

  • 刪除新的(第二個)列並再次將文件另存為csv。

這是一個如何通過SimpleDateFormat類更改格式的示例。

public static String dateConvert(String origFormat) throws ParseException {
    SimpleDateFormat origDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm");
    SimpleDateFormat newDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
    Date retrivedDate = origDateFormat.parse(origFormat);
    return newDateFormat.format(retrivedDate);
}

看一下SimpleDateFormat類 - 您可以使用它來將傳入的文本解析為Date。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM