如何在 android 的任何版本上每天从每台 android 设备获取唯一编号(即来自每台设备的相同编号)运行
How to get a unique number everyday from every android device (i.e same number from every device) running on any version of android
我想每天获得一个可以从任何 android 设备生成的唯一编号,并且每个设备都应该生成相同的编号。
我尝试获取日期,但 android 的旧版本不支持语言环境时区,
然后我使用了这段代码
val df = DateFormat.getDateInstance()
var dff = DateFormat.getTimeInstance()
var localDate = df.format(Date())
df.timeZone = TimeZone.getTimeZone("gmt")
val gmtDate = df.format(Date())
val localTime = dff.format(Date())
但是这会从不同的设备生成不同格式的日期,但我希望 6.
以上的每个 android 版本的格式都相同
System.currentTimeMillis()
给你a UTC timestamp,怎么样?您可以将它除以 (1000 * 60 * 60 * 24)
以将其四舍五入到最近的一天(闰秒可能存在一些问题,但您可能不在乎)
tl;博士
java.time.LocalDate
.now( ZoneOffset.UTC )
.atStartOfDay( ZoneOffset.UTC )
.toInstant()
.getEpochSecond()
详情
你的问题不清楚。也许你问的是如何确定当前时刻在 UTC 中看到的一天的第一时刻。
仅使用 java.time 类 进行 date-time 工作。永远不要使用有严重缺陷的旧版 类,例如 Date
、Calendar
和 SimpleDateFormat
。
java.time 类 内置于 Android 26+。对于早期的 Android,最新的工具通过“API de-sugaring”带来了大部分功能。
Instant startOfTodayUtc =
LocalDate
.now( ZoneOffset.UTC )
.atStartOfDay( ZoneOffset.UTC )
.toInstant() ;
long secondsSinceEpochReference = startOfTodayUtc.getEpochSecond() ;
我使用以下代码从任何设备获取相同格式的日期和时间。这适用于 Android 6.0 和 Android 11.
@SuppressLint("SimpleDateFormat")
val df = SimpleDateFormat("yyyy-MM-dd")
df.timeZone = TimeZone.getTimeZone("gmt")
val dff =SimpleDateFormat("yy-MMM-dd, HH:mm:ss aa")
val dfff =SimpleDateFormat("yyyyMMdd")
val gmtDate = df.format(Date())
val localDateTime = dff.format(Date())
val isoDate=dfff.format(Date())
我知道你的问题,你想在你的每台设备上获得一个全球唯一的,我有两种方法:
- 你可以建立一个唯一编号的中心发电机;
- 可以学习Snowflake算法,这个方法用到了时间和ip
生成全球唯一编号;
希望对你有帮助。
我想每天获得一个可以从任何 android 设备生成的唯一编号,并且每个设备都应该生成相同的编号。 我尝试获取日期,但 android 的旧版本不支持语言环境时区, 然后我使用了这段代码
val df = DateFormat.getDateInstance()
var dff = DateFormat.getTimeInstance()
var localDate = df.format(Date())
df.timeZone = TimeZone.getTimeZone("gmt")
val gmtDate = df.format(Date())
val localTime = dff.format(Date())
但是这会从不同的设备生成不同格式的日期,但我希望 6.
以上的每个 android 版本的格式都相同System.currentTimeMillis()
给你a UTC timestamp,怎么样?您可以将它除以 (1000 * 60 * 60 * 24)
以将其四舍五入到最近的一天(闰秒可能存在一些问题,但您可能不在乎)
tl;博士
java.time.LocalDate
.now( ZoneOffset.UTC )
.atStartOfDay( ZoneOffset.UTC )
.toInstant()
.getEpochSecond()
详情
你的问题不清楚。也许你问的是如何确定当前时刻在 UTC 中看到的一天的第一时刻。
仅使用 java.time 类 进行 date-time 工作。永远不要使用有严重缺陷的旧版 类,例如 Date
、Calendar
和 SimpleDateFormat
。
java.time 类 内置于 Android 26+。对于早期的 Android,最新的工具通过“API de-sugaring”带来了大部分功能。
Instant startOfTodayUtc =
LocalDate
.now( ZoneOffset.UTC )
.atStartOfDay( ZoneOffset.UTC )
.toInstant() ;
long secondsSinceEpochReference = startOfTodayUtc.getEpochSecond() ;
我使用以下代码从任何设备获取相同格式的日期和时间。这适用于 Android 6.0 和 Android 11.
@SuppressLint("SimpleDateFormat")
val df = SimpleDateFormat("yyyy-MM-dd")
df.timeZone = TimeZone.getTimeZone("gmt")
val dff =SimpleDateFormat("yy-MMM-dd, HH:mm:ss aa")
val dfff =SimpleDateFormat("yyyyMMdd")
val gmtDate = df.format(Date())
val localDateTime = dff.format(Date())
val isoDate=dfff.format(Date())
我知道你的问题,你想在你的每台设备上获得一个全球唯一的,我有两种方法:
- 你可以建立一个唯一编号的中心发电机;
- 可以学习Snowflake算法,这个方法用到了时间和ip 生成全球唯一编号;
希望对你有帮助。