gson 尝试保存LocalDateTime,但保存到json的值为空[重复]

4dc9hkyq  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(164)

此问题在此处已有答案

Java 8 LocalDateTime deserialized using Gson(6个回答)
26天前关闭。
在android studio中,我试图使用内部存储将日历视图的输入保存为LocalDateTime作为JSON,但我遇到了一个问题。我创建了calenderView并将其设置为当您通过用户界面更改它时获取日期,如下所示。

CalendarView dateInput = findViewById(R.id.calenderDate);
        dateInput.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
                inputtedDate = LocalDate.of(year, month + 1, dayOfMonth);
            }
        });

字符串
然后,我从包含用户输入时间的文本框中获取字符串,然后使用.of方法将它们组合为一个DateTime。

String timeString = timeInput.getText().toString();
LocalTime inputtedTime = LocalTime.parse(timeString);
LocalDateTime inputtedDateTime = LocalDateTime.of(inputtedDate, inputtedTime);


然后使用Gson将其保存到内部存储。

public void WriteJsonToStorage(){
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String json = gson.toJson(bookingToWrite);
        FileOutputStream fos = null;
       
        fos = context.openFileOutput("SingleBooking.txt", Context.MODE_PRIVATE);
        fos.write(json.getBytes());        
    }


在调试器中,我可以看到这是当我选择一个日期并手动将超时写为'14:56'时它所拾取的
2023-12-14T14:56
但是当我之后检查文件时,我检查的dateTime里面什么都没有。

{ 
  "bookingDateTime": {},
  "bookingName": 0,
  "peopleTotal": 5,
  "tableNumber": 0 
}


我在这里是否遗漏了一个步骤,以便在json中正确存储日期和时间?

u59ebvdq

u59ebvdq1#

如果你想在一个特定的模式和locale中获取日期和时间,你可以使用以下方法:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", 
Locale.getDefault());
String currentDateandTime = sdf.format(new Date());

字符串

相关问题