You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定Unix时间发送Minecraft名称抢注请求?

实现指定Unix时间发送Minecraft名称抢注请求

要精准在指定Unix时间发送请求,核心是计算当前时间与目标时间的差值,等待对应时长后再执行请求逻辑。以下是修改后的代码实现:

public async Task Put(string name, long targetUnixTimeMs)
{
    // 获取当前时间的Unix毫秒时间戳
    var currentUnixMs = DateTimeOffset.Now.ToUnixTimeMilliseconds();
    // 计算需要等待的毫秒数
    var delayMs = targetUnixTimeMs - currentUnixMs;

    if (delayMs > 0)
    {
        Console.WriteLine($"等待 {delayMs} 毫秒后发送请求...");
        await Task.Delay(Convert.ToInt32(delayMs));
    }
    else if (delayMs < 0)
    {
        Console.WriteLine("目标时间已过,立即发送请求");
    }

    // 原请求逻辑
    var sent = DateTimeOffset.Now.ToUnixTimeMilliseconds();
    Console.WriteLine($"发送时间:   {sent}");
    using (var request = new HttpRequestMessage(HttpMethod.Put, $"https://api.minecraftservices.com/minecraft/profile/name/{name}"))
    {
        request.Headers.Add("Authorization", "Bearer Token");
        using (var response = await client.SendAsync(request))
        {
            var recv = DateTimeOffset.Now.ToUnixTimeMilliseconds();
            Console.WriteLine($"状态码:  {response.StatusCode}");
            Console.WriteLine($"接收时间:  {recv}");
            Console.WriteLine();
        }
    }
}

关键说明

  • 时间单位匹配:确保传入的targetUnixTimeMs是毫秒级的Unix时间戳,如果你的目标时间是秒级,需要先乘以1000转换(比如targetUnixTimeSec * 1000)
  • 等待时长限制:Task.Delay()的参数是int类型,最大支持约24天的等待(int最大值为2147483647毫秒),如果需要等待更久,需要拆分多次等待操作
  • 时间准确性:本地系统时间的误差会直接影响请求发送时机,建议确保本地时间与Minecraft服务器时间同步
  • 异常处理:如果需要支持取消等待,可以给方法添加CancellationToken参数,传入Task.Delay(delayMs, cancellationToken)来实现

内容的提问来源于stack exchange,提问作者hud Kad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:54:05