Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Room:字符串日期到长的类型转换器?_Android_Android Room - Fatal编程技术网

Android Room:字符串日期到长的类型转换器?

Android Room:字符串日期到长的类型转换器?,android,android-room,Android,Android Room,我将日期作为字符串存储在数据库中。这在使用MySQL时效果很好,但是在android中使用room时,我无法在我的查询中正确地按date to和date from进行搜索,因为room无法识别字符串日期。我想知道是否可以使用类型转换器简单地将字符串转换为长字符串。而不是重做我的整个数据库来存储日期而不是字符串,然后从日期转换为长 对此,我们将不胜感激 /** * Method used to gain the current date. * * @return */ private Da

我将日期作为字符串存储在数据库中。这在使用MySQL时效果很好,但是在android中使用room时,我无法在我的查询中正确地按date to和date from进行搜索,因为room无法识别字符串日期。我想知道是否可以使用类型转换器简单地将字符串转换为长字符串。而不是重做我的整个数据库来存储日期而不是字符串,然后从日期转换为长

对此,我们将不胜感激

/**
 * Method used to gain the current date.
 *
 * @return
 */
private Date currentDate() {
    calendar.add(Calendar.DATE, 0);
    return calendar.getTime();
}

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
String dateTimeOfWorkout = dateFormat.format(currentDate());
我明白了:

  @TypeConverter
  public static Date fromTimestamp(String value) {
  if (value != null) {
    try {
        return df.parse(value);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return null;
} else {
    return null;
}
质疑


更新:有了上面的打字机转换器和查询,在1个月的时间里它仍然不能对结果进行排序。它只是显示所有内容。

而不重做整个数据库。这可以通过数据库迁移来完成

使用类型转换器可以将日期存储在数据库中

添加用于将日期转换为长时间的类

public class DateConverter {
    @TypeConverter
    public static Date toDate(Long timestamp){
        return timestamp == null ? null : new Date(timestamp);
    }

    @TypeConverter
    public static Long toTimestamp(Date date){
        return date == null ? null : date.getTime();
    }
}
现在,我们告诉房间使用我们使用TypeConverts和Anotion添加的日期转换器

@Database(entities = {MyEntity.class},version = 1,exportSchema = false)
@TypeConverters(DateConverter.class)
public abstract class MyDatabase extends RoomDatabase {
    //room database
}

现在,我们可以在实体类中使用Date作为数据类型,而无需重做整个数据库。这可以通过数据库迁移来完成

使用类型转换器可以将日期存储在数据库中

添加用于将日期转换为长时间的类

public class DateConverter {
    @TypeConverter
    public static Date toDate(Long timestamp){
        return timestamp == null ? null : new Date(timestamp);
    }

    @TypeConverter
    public static Long toTimestamp(Date date){
        return date == null ? null : date.getTime();
    }
}
现在,我们告诉房间使用我们使用TypeConverts和Anotion添加的日期转换器

@Database(entities = {MyEntity.class},version = 1,exportSchema = false)
@TypeConverters(DateConverter.class)
public abstract class MyDatabase extends RoomDatabase {
    //room database
}

现在,我们可以在实体类中将日期用作数据类型,这可能会对您有所帮助:您可以发布字符串的示例格式吗?您可以准确地显示您的日期格式吗?示例。将字符串的格式添加到问题中这可能会帮助您:您可以发布字符串的示例格式吗?您可以准确显示您的日期格式吗?示例。将字符串的格式添加到问题中。我从阅读文档中了解到了这一点。我的问题是“是否可以使用类型转换器将字符串转换为long。而不必重做整个数据库来存储日期而不是字符串,然后从日期转换为long。”可以使用数据库迁移来完成,而无需再次执行整个数据库。我从阅读文档中了解到这一点。我的问题是“是否可以使用类型转换器简单地将字符串转换为long。而不必重做整个数据库来存储日期而不是字符串,然后从日期转换为long。”可以使用数据库迁移来完成,而无需再次执行整个数据库。