JAVA中,如何将日期2013-06-27T00:00:00+08:00 转换为 2013-06-27 就是不要T后后面的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中,如何将日期2013-06-27T00:00:00+08:00 转换为 2013-06-27 就是不要T后后面的数据?相关的知识,希望对你有一定的参考价值。

1、首先我们先要确保编写并测试代码前先安装好IDE和JDK环境,IDE可以下载使用intellij idea。

2、安装好,我们使用intellij idea创建一个java项目并创建一个java文件,然后开始编写代码。

3、需要导入的java 工具包,并且我们设定日期的输入样式并创建对应的字符串,可以是任意格式,分隔符也可以随意,我们后面可以根据输入字符串的格式进行转换。

4、创建两个DateFormat格式的对象,分别为输入的字符串的格式和想要输出的字符串的格式,我们可以看到输入字符串的格式是一致的,yyyy标识年mm标识月 dd标识日。

5、将输入的时间字符串按照格式转换为时间对象,然后再将这个时间对象格式化输出为需要的样式,由于可能出现转换异常我们需要使用try catch捕捉异常。

6、运行代码,运行结果如图所示,可以看到按照我们所想正常进行了转换。

参考技术A

JAVA中将日期2013-06-27T00:00:00+08:00 转换为 2013-06-27, 可以通过String类的spilt方法进行转换。

实现代码:

String str="2013-06-27T00:00:00+08:00 ";
String[] strs=str.split("T");
System.out.println(strs[0]); //输出转换后的日期

参考技术B SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date = formatter.parse("2018-11-07T18:37:42.803+08:00");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String sDate=sdf.format(date);
System.out.println(sDate);
参考技术C String s = new String("2013-06-27 T 00:00:00+08:00");

String a[] = s.split("T");
a[0] 的值便是你要的数据本回答被提问者采纳
参考技术D 这什么格式
直接用substring吧

如何使用 JPA 将 Java 日期存储到 Mysql 日期时间

【中文标题】如何使用 JPA 将 Java 日期存储到 Mysql 日期时间【英文标题】:How to store Java Date to Mysql datetime with JPA 【发布时间】:2011-01-24 22:47:58 【问题描述】:

谁能告诉我如何将 Java 日期存储到 Mysql 日期时间...?

当我尝试这样做时...仅存储日期,时间保持为 00:00:00 在这样的Mysql日期存储中......

2009-09-22 00:00:00

我不仅想要日期,还想要时间......就像

2009-09-22 08:08:11

我使用 JPA(Hibernate) 和 spring mydomain 类使用 java.util.Date 但我使用手写查询创建了表...

这是我的创建声明

CREATE TABLE ContactUs (
  id BIGINT AUTO_INCREMENT, 
  userName VARCHAR(30), 
  email VARCHAR(50),
  subject VARCHAR(100), 
  message VARCHAR(1024), 
  messageType VARCHAR(15), 
  contactUsTime DATETIME,
  PRIMARY KEY(id)
);

【问题讨论】:

你的代码片段,也许? 链接:coderanch.com/t/304851/JDBC/java/… 这些天你根本不应该再使用java.util.Date(在2010年可能没有更好的选择)。最好使用现代类,例如 java.time.Instantjava.time.LocalDateTime,具体取决于您需要存储的日期时间的确切要求。 其中一些旧答案在 Google 排名中排名很高。在 Java 8+ 中,我们可以简单地使用 LocalDateTime 来保存日期时间,而不是使用 @Temporal 来保存日期时间格式 preparedStatement.setTimestamp(1, new Timestamp(System.currentTimeMillis())); 【参考方案1】:

见链接:

http://www.coderanch.com/t/304851/JDBC/java/Java-date-MySQL-date-conversion

下面的代码刚刚解决了这个问题:

java.util.Date dt = new java.util.Date();

java.text.SimpleDateFormat sdf = 
     new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);

此“currentTime”已插入到类型为 DateTime 的列中,并且插入成功。

【讨论】:

但是,currentTime 是一个 String 对象,在 db 中我们将 datetime 作为数据类型,我认为它不会被插入。对吧? yyyy-MM-dd HH:mm:ss 非常重要。注意大小写。【参考方案2】:

使用 @Temporal(TemporalType.TIMESTAMP) 注释您的字段(或 getter),如下所示:

public class MyEntity 
    ...
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date myDate;
    ...

这应该可以解决问题。

【讨论】:

这就是答案! 为此,这是正确的答案。 请注意,如果您选择此解决方案,您的日期将在从 db 获取时显示为时间戳。它不会有很好的格式'yyyy-MM-dd ....')【参考方案3】:

您可能在使用java.sql.Date 吗?虽然它作为 Java 类具有毫秒粒度(它是 java.util.Date 的子类,错误的设计决策),但 JDBC 驱动程序会将其解释为没有时间组件的日期。您必须改用java.sql.Timestamp

【讨论】:

我不会在域类中使用java.sql.Datejava.sql.Timestamp,但我想这是在编辑OP 之前编写的。 我愿意。 java.util.Date 对象与 java.sql.Timestamp 对象相比,结果完全可预测。【参考方案4】:

可能是因为您的 java 日期格式与 mysql format (YYYY-MM-DD HH:MM:SS) 不同

这样做

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();
 System.out.println(dateFormat.format(date));

【讨论】:

您在参考文献中提到了正确的格式,然后在代码中使用了错误的格式。【参考方案5】:

你会得到 2011-07-18 + 时间格式

long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);

【讨论】:

【参考方案6】:

mysql 日期时间 -> GregorianCalendar

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2012-12-13 14:54:30"); // mysql datetime format
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
System.out.println(calendar.getTime());

GregorianCalendar -> mysql 日期时间

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = format.format(calendar.getTime());
System.out.println(string);

【讨论】:

【参考方案7】:
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());    
preparedStatement.setObject(param);

【讨论】:

【参考方案8】:

使用以下代码将日期插入 MySQL。我们可以通过设置STR_TO_DATE(?, '%l:%i %p')参数来帮助数据库识别我们的日期,而不是改变我们的日期格式以满足MySql的要求。

例如,2014-03-12 可以表示为STR_TO_DATE('2014-03-12', '%Y-%m-%d')

preparedStatement = connect.prepareStatement("INSERT INTO test.msft VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 

【讨论】:

【参考方案9】:

虽然此答案中的条件在 mysql 中非常简单,但 列数据类型为 datetime 并且您希望将数据从 java 代码发送到 mysql:

java.util.Date dt = new java.util.Date();whatever your code object may be.setDateTime(dt);

重要的是选择日期,它的格式已经按照mysql格式发送,不需要进一步修改。

【讨论】:

【参考方案10】:

其实你可能不会用SimpleDateFormat,你可以用这样的东西;

  @JsonSerialize(using=JsonDateSerializer.class)
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
  private Date blkDate;

这样可以直接获取指定格式的日期。

【讨论】:

【参考方案11】:

我还是更喜欢一行的方法

new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())

【讨论】:

【参考方案12】:

对我有用!!

在mysql表中

DATETIME

在实体中:

private Date startDate;

进行中:

objectEntity.setStartDate(new Date());

在preparedStatement中:

pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime()));

【讨论】:

以上是关于JAVA中,如何将日期2013-06-27T00:00:00+08:00 转换为 2013-06-27 就是不要T后后面的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中获取给定的日期字符串格式(模式)?

在Java中解析日期的毫秒分数

如何使用 JPA 将 Java 日期存储到 Mysql 日期时间

如何在数据表中从 '2021-01-09T00:00:00' LIKE 2021-01-09 转换日期时间格式

日期格式转换 java 2016-09-03T00:00:00.000+08:00

Java:无法将给定的对象格式化为日期