mysql时间戳的Joda-Time日期格式中的当前datetime [英] Current datetime in Joda-Time date formatting for mysql timestamp

查看:116
本文介绍了mysql时间戳的Joda-Time日期格式中的当前datetime的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将当前日期和时间导入格式为 Joda-Time 格式.如何获得基础MySQL TimeStamp格式化字段可以接受的格式的当前日期时间?

I need to import the current date and time into a MySQL database field whose format is TimeStamp. From examining sample data, it seems that the format for the MySQL TimeStamp datatype is "yyyy-mm-dd hh:mm:ss". I am using Joda-Time formatting in my spring hibernate application. How do I get the current date time in a format that will be accepted by the underlying MySQL TimeStamp formatted field?

这是我当前的代码,由于eclipse表示.parseDateTime()需要字符串参数而不是DateTime参数,因此无法编译:

Here is my current code, which will not compile because eclipse says .parseDateTime() requires a string argument and not a DateTime argument:

public void setCreated(){
    DateTime now = new org.joda.time.DateTime();
    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
    created = fmt.parseDateTime(now);
    System.out.println("'''''''''''''''''''''' created is: "+created);
}

我要保留的实体定义如下:

The entity that I am trying to persist is defined as follows:

@Entity
@Table(name = "documents")
public class Document {
@Id
@GeneratedValue
@Column(name="id")
private Integer id;

@ManyToOne
@JoinColumn(name = "client_id")
private Patient patient;

@ManyToOne
@JoinColumn(name = "type_id")
private DocumentType type;

@Column(name="name")
private String name;

@Column(name="description")
private String description;

@Column(name="filename")
private String filename;

@Column(name="content")
@Lob
private Blob content;

@Column(name="content_type")
private String contentType;

@Column(name = "created")
private DateTime created;

public Integer getId(){return id;}
public void setId(Integer i){id=i;}

protected void setPatient(Patient patient) {this.patient = patient;}
public Patient getPatient(){return this.patient;}

public void setType(DocumentType type) {this.type = type;}
public DocumentType getType() {return this.type;}

public String getName(){return name;}
public void setName(String nm){name=nm;}

public String getDescription(){return description;}
public void setDescription(String desc){description=desc;}

public String getFileName(){return filename;}
public void setFileName(String fn){filename=fn;}

public Blob getContent(){return content;}
public void setContent(Blob ct){content=ct;}

public String getContentType(){return contentType;}
public void setContentType(String ctype){contentType=ctype;}

public void setCreated(){
    DateTime now = new org.joda.time.DateTime();
    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
    created = fmt.parseDateTime(now);
System.out.println("''''''''''''''''''''''''''' created is: "+created);
}
public DateTime getCreated() {return this.created;}

@Override
public String toString() {return this.getName();}
public boolean isNew() {return (this.id == null);}

}

如何更改以上内容,以便将其以正确的格式保存数据以插入到MySQL TimeStamp字段中?

How do I change the above so that it saves data in the correct format for insertion into a MySQL TimeStamp field?

与Sotirios的建议有关,以下是我当前pom.xml的相关部分,以供讨论:

Related to Sotirios' suggestion, here are relevant portions to my current pom.xml for discussion purposes:

<properties>
    <jodatime-hibernate.version>1.3</jodatime-hibernate.version>
    <jodatime-jsptags.version>1.1.1</jodatime-jsptags.version>
    <jodatime.version>2.3</jodatime.version>
    <jadira-usertype-core.version>3.1.0.CR8</jadira-usertype-core.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.jadira.usertype</groupId>
        <artifactId>usertype.core</artifactId>
        <version>${jadira-usertype-core.version}</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${jodatime.version}</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time-hibernate</artifactId>
        <version>${jodatime-hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time-jsptags</artifactId>
        <version>${jodatime-jsptags.version}</version>
    </dependency>
</dependencies>

推荐答案

因为您似乎需要它:

我的实体类

@Entity
@Table(name = "time_fields")
public class TimeFields {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long timeId;

    @Column
    @Temporal(TemporalType.DATE)
    private Date date;

    @Column
    @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
    private DateTime dateTime;

带有适当的吸气剂和吸气剂.

with appropriate getters and setters.

客户代码

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PersistenceContext.class);
SessionFactory sessionFactory = context.getBean(SessionFactory.class);
Session session = sessionFactory.openSession();

TimeFields timeFields = new TimeFields();
Date date = new Date();
DateTime dateTime = new DateTime();
System.out.println(date);
System.out.println(dateTime);
timeFields.setDate(date);
timeFields.setDateTime(dateTime);

session.beginTransaction();
session.persist(timeFields);
session.getTransaction().commit();

System.out.println(timeFields.getTimeId());
System.out.println(timeFields.getDate());
System.out.println(timeFields.getDateTime());

此打印

Tue Dec 17 00:22:35 EST 2013
2013-12-17T00:22:35.843-05:00
3
Tue Dec 17 00:22:35 EST 2013
2013-12-17T00:22:35.843-05:00

在joda-time和休眠状态下,您将需要jadira库

Along with joda-time and hibernate, you'll need the jadira libs

<dependency>
    <groupId>org.jadira.usertype</groupId>
    <artifactId>usertype.jodatime</artifactId>
    <version>2.0.1</version>
</dependency>

您应该阅读有关Hibernate UserType s的更多信息.

You should read more about Hibernate UserTypes.

这篇关于mysql时间戳的Joda-Time日期格式中的当前datetime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆