如何在 Java 中使用 AWSDateTime

How to use AWSDateTime in Java

正在尝试了解如何输入 AWSDateTime。我不想使用 Java 8.

createDate 需要 Temporal.DateTime

com.amplifyframework.core.model.temporal
public static final class Temporal.DateTime

private final @ModelField(targetType="AWSDateTime", isRequired = true) Temporal.DateTime createDate;

还有其他方法可以实现吗?

Date input = new Date();
LocalDate date = input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); --> this requires Java 8

Todo todo = Todo .builder()
        .createDate(date)
        .build();

Amplify.DataStore.save(todo,
        result -> Log.i("MyAmplifyApp", "Created successfully"),
        error -> Log.e("MyAmplifyApp",  "Error creating", error)

我最终使用了 DateUtils 中的函数。

https://docs.aws.amazon.com/appsync/latest/devguide/scalars.html

AWSDateTime

格式为 YYYY-MM-DDThh:mm:ss.sssZ.

的扩展 ISO 8601 日期和时间字符串
String date1 = com.amazonaws.util.DateUtils.formatISO8601Date(new Date());

Todo todo = Todo .builder()
        .createDate(new Temporal.DateTime(date1))
        .build();

注意:这将以 GMT 时间存储日期。

Temporal.DateTime 有一个 public 构造函数,它采用 java.util.Date 并以秒为单位进行偏移:

public DateTime(@NonNull java.util.Date date, int offsetInSeconds)

你可以这样使用它:

Date date = new Date();
int offsetMillis = TimeZone.getDefault().getOffset(date.getTime());
int offsetSeconds = (int) TimeUnit.MILLISECONDS.toSeconds(offsetMillis);
Temporal.DateTime temporalDateTime = new Temporal.DateTime(date, offsetSeconds);
Todo todo = Todo.builder()
    .createDate(temporalDateTime)
    .build();