你好,我正在研究我的系统,现在我一直坚持如何保存每月和一年的单独列。在我的系统中,我有一个目标让用户打印报告月或每天,而我的解决方案是将每日和年保存到每个单独的列中。对不起,我的英语不好。
例如,您可以将系统日期作为字符串作为字符串,从此资源可以看出:如何将当前日期转换为Java中的字符串?
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
以后您可以使用Split将字符串用于所需的值(例如,一年,每月(,例如:如何按Space
将字符串拆分str = "2017-05-03";
String[] splited = str.split("-");
在最后一个示例中," - ",也许您需要使用" - "的ASCII代码。las,我忘记了这个
您可以在下面使用JDK 8日期API中的localdate来获取年,每月和每日,并将其持续到DB中:
LocalDate date = LocalDate.now();
int year = date.getYear();
int month = date.getMonthValue(); // or Month month = date.getMonth() if you want month names
int day = date.getDayOfMonth();
其他答案对于在Java中使用LocalDate
是正确的。
数据库
至于数据库,将列定义为仅日期类型的类型,例如SQL Standard's类型DATE
。
JDBC
如果您的JDBC驱动程序符合JDBC 4.2,则可以直接使用Java.Time类型,例如LocalDate
。
myPreparedStmt.setObject( … , myLocalDate ) ;
和:
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
如果您的驱动程序不符合,请返回使用Java.sql类型。您可以通过调用添加到旧类中的新方法来转换为fro。但是,尽可能短暂地使用Java.sql类型,使用Java.Time类进行所有实际工作。
myPreparedStmt.setDate( … , java.sql.Date.valueOf( myLocalDate ) ) ;
…和…
LocalDate ld = myResultSet.getDate( … ).toLocalDate() ;