在facebook api上工作时遇到一个名为start_time的字段是datetime类型,我在我的DTO类中将start_time字段声明为字符串,而我将json转换为java我能够获得start_time并且我填充了我的dto对象但是当我尝试从DTO对象中检索时它显示为null。
DataDTO data = new DataDTO();
String start_time = item.getString("start_time").toString();
data.setStart_time(start_time);
System.out.println(start_time ) // 2016-03-12T22:00:00-0300
System.out.println(data.getStart_time()); // getting null
我的DTO课程
public class DataDTO implements Serializable{
private String id;
private String name;
private String start_time;
private String timezone;
private String location;
private String end_time;
//getters and setters
}
我的样本json数据
{
"id":"1443832172536969",
"timezone":"America/New_York",
"location":"Atlanta, GA, United States",
"name":"Atlanta Dream Tour 2015",
"start_time":"2016-03-12T22:00:00-0300"
}
当我用Google搜索时,我才知道DateTime属于joda time api究竟属于什么?我是否需要在项目中包含joda-time api的任何jar文件?
我尝试创建DateTime dt = new DateTime();在我的方法中,显示DateTime无法解析为类型。
我正在使用java版本1.7.0_40这是否支持joda-time。 我尝试使用toString()方法转换为字符串,但没有用。 请帮助我如何将DateTime转换为字符串?
答案 0 :(得分:0)
我误解了什么吗?
发生这种情况的唯一原因是data.setStart_time(start_time);
无效或data.getStart_time()
未正确实施。
DateTime和String之间不需要转换。
答案 1 :(得分:0)
如果您只想将开始日期更改为字符串,则可以使用
start_time_string = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",java.util.Locale.getDefault()).parse(start_time);
答案 2 :(得分:0)
你在使用Maven吗?你有没有在你的pom.xml上添加joda-time依赖?如果你没有,你应该添加这样的东西:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.8</version>
</dependency>
可以找到更多信息here。希望它有所帮助!
答案 3 :(得分:0)
尝试日历:
Calendar c = Calendar.getInstance();
System.out.println("Seconds : "+c.get(Calendar.SECOND));
System.out.println("Minute : "+c.get(Calendar.MINUTE));
System.out.println("Hour of day : "+c.get(Calendar.HOUR_OF_DAY));
System.out.println("Date : "+c.get(Calendar.DATE));
System.out.println("Day : "+c.get(Calendar.DAY_OF_WEEK));
System.out.println("Month : "+c.get(Calendar.MONTH));
System.out.println("Year : "+c.get(Calendar.YEAR));
并根据您的要求对其进行格式化。