我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
我有一个字符串
String s = "01 NOVEMBER 2012";
Run Code Online (Sandbox Code Playgroud)
那我想把它解析为sqlDate,
然后我会将其插入数据库
有可能将该字符串解析为sqlDate吗?!?!
是的,sql日期格式是"yyyy-mm-dd"
对于使用 H2 的 JUnit-Test,我正在保存一个具有 LocalDate 属性和值的实体LocalDate.parse("1900-01-01")。测试失败
Expected: is <1900-01-01>
but: was <1899-12-31>
Run Code Online (Sandbox Code Playgroud)
LocalDate 不关心时区,所以我猜更改是在 H2 数据库的保存操作期间进行的。
我已经尝试设置 timezone UTC,因为这应该是 H2 的时区,然后 H2 不应将其移交的日期解释为具有必须转换为 UTC 的另一个时区。但这似乎没有帮助。
public static void main(final String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
SpringApplication.run(BackendApplication.class, args);
}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的建议和想法
当我将我的字符串对象mm/dd/yyyy格式转换为Date它给我
java.text.ParseException: Unparseable date: "09/17/2014"
Run Code Online (Sandbox Code Playgroud)
我想这样做:
String date= "09/17/2014";
DateFormat df = new SimpleDateFormat();
Date journeyDate= (java.sql.Date) df.parse(date);
Run Code Online (Sandbox Code Playgroud) 我有几行代码,如下所示
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yy");
formatter = formatter.withLocale( Locale.getDefault() );
LocalDate date = LocalDate.parse("11-NOV-20", formatter);
Run Code Online (Sandbox Code Playgroud)
这给出了以下异常
Exception in thread "main" java.time.format.DateTimeParseException: Text '11-NOV-20' could not be parsed at index 3
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDate.parse(LocalDate.java:400)
at src.DateTimeTest.main(DateTimeTest.java:30)
Run Code Online (Sandbox Code Playgroud)
如果我将月份从11 月更改为11 月,效果很好。我从数据库表中获取这个值。我是否必须以编程方式更改它,或者有什么方法可以处理它?
将数据插入我的oracle数据库时出现以下错误。
java.sql.SQLException: ORA-01843: not a valid month
Run Code Online (Sandbox Code Playgroud)
在数据库中的日期是:dd-MMM-yy(06-MAR-12)
我通过以下方法将2012年6月3日转换为dd-MMM-yy:
String s="06-03-2012";
String finalexampledt = new SimpleDateFormat("dd-MMM-yy").format(new SimpleDateFormat("dd-MM-yyyy").parse(s));
Run Code Online (Sandbox Code Playgroud)
所以我得到了06年3月6日,这与上面的数据库日期格式相同,但我仍然收到错误。我插入为:
在index.jsp中
String todaydate="";
Calendar calendar1 = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
todaydate = dateFormat.format(calendar1.getTime());
<input type="text" name="datename" value="<%=todaydate%>"/>
Run Code Online (Sandbox Code Playgroud)
在servlet(doPost)中
String s=request.getParameter("datename");
PreparedStatement ps=con.prepareStatement("insert into tablename(rest_dt, othercolname) values (to_date(?, 'dd-mm-yyyy'), ?)");
ps.setString(1, s);
ps.setString(2, otherstringdata);
int rs=ps.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
有什么想法吗
我想使用Java 8从字符串转换为日期。
我可以轻松地使用SimpleDateFormat和进行yyyy-MM-dd格式转换
String startDate2="2017-03-24";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(new java.sql.Date(sdf1.parse(startDate2).getTime()));
Run Code Online (Sandbox Code Playgroud)
输出: 2017-03-24
String startDate2="2017-03-24";
SimpleDateFormat sdf1 = new SimpleDateFormat("uuuu-MM-dd");
System.out.println(new java.sql.Date(sdf1.parse(startDate2).getTime()));
Run Code Online (Sandbox Code Playgroud)
但是当我用'uuuu-MM-dd'代替'yyyy-MM-dd'
输出:(
1970-03-24错误)
现在在Java 8中:
String startDate1="2017-03-23";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd");
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何获取与上述正确输出相同的sql date类型的日期。
我的 FXML 中有一个 DatePicker,我需要将它插入到我的 SQL 数据库中的日期。我想格式化我的日期,但它不起作用。
LocalDate localDate = purchased_at.getValue();
localDate.format(DateTimeFormatter.ofPattern("dd.mm.yyyy"));
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误。
Caused by: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour
Run Code Online (Sandbox Code Playgroud)
我还是个初学者。在过去的 3 或 4 个月里,我使用了 Java。我正在努力改进。
我在 Java 中遇到 Date 和 SimpleDateFormat 对象的一些问题。我知道我需要在 Java 8 中使用新的日期和时间 API 来切换它们,我想这样做,但我有一个问题。当我从数据库中检索我的日期时(它是 SimpleDateFormat 并且我无法更改它),并且当我想添加一些小时(例如下午 4 点),然后我需要在用户从下拉列表中选择的时区中(假设美国/加拉加斯),所以我希望美国/加拉加斯的结果是 16 小时,但在我的情况下是 16 小时 UTC + UTC 和美国/加拉加斯之间的差异。这是我的代码:
Date startDate -> it's value is Tue Feb 23 20:00:00 CET 2021
Date date = new SimpleDateFormat("yyy-MM-dd").format( startDate + 4:00PM + America/Caracas);
Run Code Online (Sandbox Code Playgroud)
但是,奇怪的是,这种格式化广告 4 PM 值但不知何故忽略了时区的那部分。所以,相反,我在美国/加拉加斯有 20 小时,我在 UTC 时间有 20 小时。有人可以帮助我吗?