使用数据绑定时从 getTimeInMillis 获取日期

Posted

技术标签:

【中文标题】使用数据绑定时从 getTimeInMillis 获取日期【英文标题】:Getting Date from getTimeInMillis when using Databinding 【发布时间】:2017-07-24 14:57:26 【问题描述】:

我有一个 timeInMillis 值,我知道我可以从类似的东西中得到一个 Date

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateString = formatter.format(new Date(dateInMillis)));

我正在使用DataBinding 来填充RecyclerView。我也知道在使用 DataBinding 时可以操作字符串;

android:text='@String.format("%.1f", example.double)'

但是,我无法从我的 timeInMillis 值中找出如何使用格式化的 Date 填充 TextView

【问题讨论】:

为什么不以编程方式将 myTextView.setText(dateString) 添加到您的 TextView?仍在研究数据绑定,不确定是否允许。看起来您正在尝试在 XML 中设置 TextView 的格式? 【参考方案1】:

我认为将格式放入资源中是最好的方法:

<string name="format">%1$td/%1$tm/%1$tY</string>

您可以像这样将值绑定到资源:

<TextView ... android:text="@@string/format(model.date)" />

【讨论】:

干净,我喜欢 - 谢谢! 好答案。 Here is the documentation 有关格式的更多选项(例如,我想要像“2020 年 1 月 1 日”这样的格式,所以我使用了“%1$tb %1$td, %1$tY”)。 有什么方法可以将它与设备区域设置的时间格式一起使用吗?【参考方案2】:

您可以在模型中添加一个函数,它可以将您的 timeInMillis 转换为格式化的日期。

在你的模型中使用 dataBinding 布局:

public String getDateFormatted()
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
    return formatter.format(new Date(dateInMillis)));;

在您的布局中:

<layout>
   <data>
      <variable name="yourModel"
                type="com.example.model.yourModel"/>
   </data>
...
<TextView 
...
   android:text="@yourModel.dateFomatted"
/>

【讨论】:

【参考方案3】:

正如George Mount所说,可以使用原生字符串格式资源来处理。

这里我展示了一些我最终实现的例子:

<string name="formatter_date">%1$td/%1$tm/%1$tY</string>
<string name="formatter_time">%1$tH:%1$tM</string>

首先是 01/01/2000

秒是00:00

所有文档都是Here

【讨论】:

以上是关于使用数据绑定时从 getTimeInMillis 获取日期的主要内容,如果未能解决你的问题,请参考以下文章

使用查询检索数据时从 varchar 中删除特定字符

使用服务器端脚本时从数据表下载整个数据?

重新加载时从 sqlite 数据库中获取新数据

使用php单击按钮时从数据库中减少值

使用 useEffect 在页面加载时从上下文中获取数据

单击数据表的删除按钮时从数据库中删除数据