【发布时间】:2013-11-29 16:38:11
【问题描述】:
我有一个 csv 文件,其中日期时间列以“DD-MM-YYYY HH:MM”格式定义。但问题是 MySQL 仅接受 Datetime 类型为“YYYY-MM-DD HH:MM”。我想将 csv 文件中给出的格式转换为 MySQL 定义的格式,但我无法做到。我试图在 excel 中转换格式,但首先在 excel 中没有日期时间格式,如果我将列分成两列然后它改变了我的文件的结构,因此无法插入数据库。所以,唯一的选择是使用 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;
}
}
【问题讨论】:
-
Excel .. Java .. 哇?选择一个 :) 首先在 Excel 中修复 (CSV) 数据(这样在 Java 处理它时它是“正确的”)或在 Java 中正确处理它。 Java 将这种日期时间格式解析为 Date 对象没有问题,然后可以与 MySQL 一起使用(实际上,应该将日期而不是字符串插入到 datetime 列中!)。请参阅stackoverflow.com/questions/16598650/… 和类似内容。
-
csv 文件包含“DD-MM-YYYY HH:MM”格式的数据,我想将其转换为“YYYY-MM-DD HH:MM”。
-
别再想字符串了。将
String转换为Date(例如,使用具有适当格式的SimpleDateFormat),然后将Date作为参数传递给适用的MySQL 插入代码。数据库驱动程序将依次获取Date并将其作为适当的DATETIME类型插入数据库中。 (但如果您想要一个String,那么您可以从Date对象创建一个[具有适用格式]。) -
@user2864740 请参阅上面帖子中的编辑。我尝试过 SimpleDateFormat 但没有成功。