小编cut*_*iko的帖子

如何使用服务器时间在Firestore中设置纪元

我正试图在Firestore中创建数据时设置纪元.我希望得到一些与实时数据库中所做的相似的结果ServerValue.TIMESTAMP.

我不想通过使用设备时间来设置它,System.getCurrentMillis因为用户可以更改该时间.

根据文档需要进行更新,问题就是格式.这是我的代码:

Map<String, Object> map = new HashMap<>();
map.put("timestamp", FieldValue.serverTimestamp());
reference.update(map);
Run Code Online (Sandbox Code Playgroud)

这是Firebase Web控制台中的结果:

在此输入图像描述

我很惊讶它是西班牙语,这在某些情况下可能有用,但是时代就是我追逐的东西.尝试看到光明的一面并坚持下去,并认为我用西班牙语看到网络,所以我改变了页脚选择器中的语言,它没有改变.在这一点上,我假设是用项目语言设置的.

回到时代的尝试.考虑到我的项目也在使用实时数据库,我尝试以这种方式设置它:

Map<String, Object> map = new HashMap<>();
map.put("timestamp", ServerValue.TIMESTAMP);
reference.update(map);
Run Code Online (Sandbox Code Playgroud)

它确实上传了一些东西,但这只是胡说八道.

在此输入图像描述

我认为使用epoch作为服务器端时间戳是一种更好的标准方法,之后每个客户端都可以将其转换为用户便利性和语言环境.

可以在Firestore中将epoch设置为服务器值吗?

UPDATE

标记为正确的答案引导我得到一些我想分享的有趣发现,因此处于相同情况的其他人可以从中受益:

  • 没有必要设置epoch,因为FieldValue.serverTimestamp()它是由数据库处理的日期对象,我们在控制台中看到的只是一种友好的方式来显示它.
  • 由于FieldValue.serverTimestamp()是日期对象,因此可以按任何其他时间戳排序,如果添加orderBy("timestamp", Query.Direction.DESCENDING)到查询(或Query.Direction.ASCENDING),它将正确排序结果.
  • 关于@ 34m0注释,这是正确的,客户端不应该关注设置创建时间的逻辑,但应该在函数中完成.

android firebase google-cloud-firestore

9
推荐指数
1
解决办法
4885
查看次数

Android Jetpack compose如何测试背景颜色

我有一个设置背景颜色的可组合项,我想测试一下。

@Composable
fun MyComposableButton(
    enabledColor: Color,
    disableColor: Color,
    isEnabled: Boolean = true,
) {
    val buttonBackgroundColor = if (enabled) enabledColor else disableColor
    Button(
        ...
        enabled = enabled,
        colors = ButtonDefaults.textButtonColors(
            backgroundColor = buttonBackgroundColor
        )
    ) { ... }
}
Run Code Online (Sandbox Code Playgroud)

我期待编写如下测试:verifyEnabledBackgroundColorverifyDisabledBakcgroundColor

我在组合测试中找不到直接可用的任何断言,当尝试创建自己的断言时,我发现使用SemanticMatcther了 a SemanticNode,但构造函数是最新的内部断言,因此无法进行。

我尝试过mockColor但我做不到,根据这个答案,需要高 API 级别,这对我的项目来说是不行的。

如何测试设置可组合项的背景颜色?

android android-testing android-jetpack-compose

7
推荐指数
2
解决办法
5116
查看次数

AppBarLayout setExpanded速度很慢

我在AppBarLayout中使用了CollapsingToolbarLayout,用户可以使用setExpanded(boolean)AppBarLayout中的方法展开或折叠它.

问题是动画很慢而且不流畅.

我正在搜索,似乎支持设计库存在问题(请阅读此问题).但我不能降级我的支持设计库因为Im使用BottomSheetBehavior,我得到这个错误:

Error:(88) No resource identifier found for attribute 'behavior_hideable' in package...
Error:(88) No resource identifier found for attribute 'behavior_peekHeight' in package...
Run Code Online (Sandbox Code Playgroud)

有什么建议可以提高setExpand的速度吗?

android android-support-design android-collapsingtoolbarlayout android-appbarlayout

5
推荐指数
1
解决办法
531
查看次数

Android 当主题为深色时更改品牌启动背景颜色

我在我的应用程序中实现了深色主题。一切正常,当系统处于深色模式时,应用程序也处于深色模式,反之亦然。

问题是品牌启动。我有 2 个可绘制文件:

黑暗的:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">

    <item android:drawable="@color/splashColorDark"/>

    <item>

        <bitmap
                android:src="@drawable/logo_branded"
                android:mipMap="true"
                android:gravity="center"/>

    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

还有光:

 <?xml version="1.0" encoding="utf-8"?>

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">

        <item android:drawable="@color/splashColorLight"/>

        <item>

            <bitmap
                    android:src="@drawable/logo_branded"
                    android:mipMap="true"
                    android:gravity="center"/>

        </item>

    </layer-list>
Run Code Online (Sandbox Code Playgroud)

为了使用品牌发布,我添加了以下内容:

android:theme="@style/AppTheme.BrandedLaunchLight"
Run Code Online (Sandbox Code Playgroud)

在我的AndroidManifest.xml

显然,这样做我无法在黑暗模式处于活动状态时设置黑暗品牌启动。我应该怎么办?

android android-theme android-night-mode

5
推荐指数
1
解决办法
5777
查看次数

科特林的日期和时间

我是科特林新手。我遇到了一个问题。

我有这个代码:

val sdf = SimpleDateFormat("dd.MM.yyyy")
val currentDate = sdf.format(Date())
println(currentDate)

val stringDate = "12.03.2015"
val dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy", Locale.ENGLISH)
val millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
    .atStartOfDay(ZoneOffset.UTC)
    .toInstant()
    .toEpochMilli()
println(millisecondsSinceEpoch)

val time = currentDate - millisecondsSinceEpoch
val Datee = sdf.format(time)
println(Datee)
Run Code Online (Sandbox Code Playgroud)

但上线了:

val time = currentDate - millisecondsSinceEpoch
val Datee = sdf.format(time)
println(Datee)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

java.lang.IllegalArgumentException: Cannot format given Object as a Date
Run Code Online (Sandbox Code Playgroud)

请帮助我如何解决这个问题。我需要从字符串中的日期中减去当前日期。

更新:

如何正确地从一个日期减去另一个日期并得到天数差异?

time datetime kotlin

2
推荐指数
1
解决办法
2万
查看次数