Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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
Javascript 正确的储蓄方式是什么;办公时间“;数据?_Javascript - Fatal编程技术网

Javascript 正确的储蓄方式是什么;办公时间“;数据?

Javascript 正确的储蓄方式是什么;办公时间“;数据?,javascript,Javascript,我正在开发一个应用程序,它要求用户设置他们的“办公时间”,也就是说他们可以在什么时间使用。 我在想如何正确设置它时遇到了困难。当涉及到时间和日期时,我通常会将其保存为日期对象,或者在某些情况下保存为时间戳 不同的是,我不需要保存特定的时间,而是一天中的一系列时间(以及每天不同的时间范围)。 如果我使用一个简单的数据/时间戳,那么它将总是超出范围,因为它将在过去 存储这些数据的正确方法是什么? 我正在构建的内容将在全球范围内使用,因此在检查该配置文件是否在办公时间内时,时区也至关重要 我没有任何

我正在开发一个应用程序,它要求用户设置他们的“办公时间”,也就是说他们可以在什么时间使用。 我在想如何正确设置它时遇到了困难。当涉及到时间和日期时,我通常会将其保存为日期对象,或者在某些情况下保存为时间戳

不同的是,我不需要保存特定的时间,而是一天中的一系列时间(以及每天不同的时间范围)。 如果我使用一个简单的数据/时间戳,那么它将总是超出范围,因为它将在过去

存储这些数据的正确方法是什么? 我正在构建的内容将在全球范围内使用,因此在检查该配置文件是否在办公时间内时,时区也至关重要

  • 我没有任何开始代码或工作要展示,因为我不知道如何开始

  • 我会考虑这个格式。示例适用于Sidney中的用户

    { "tz":["+10:00","en-AU","Australia/Sydney"], // official ISO JS strings
      "weekStart":1, // Monday
      "week": [
       [null,null],  // Sunday
       ["8:30","17:30"],
       ["8:30","17:30"],
       ["8:30","17:30"],
       ["8:30","17:30"],
       ["8:30","17:30"],
       [null,null]
      ]
    }
    
    似乎您可能需要存储每个日期的ST和DST,可能还需要存储切换日期,或者将其存储在服务器上

    • 夏时制AEDT:澳大利亚东部夏时制UTC+11
    • 标准时间AEST:澳大利亚东部标准时间UTC+10(当前日期为2020年6月11日)
    如果不想使用矩或,可以使用

    const workHours={“tz”:[“+10:00”,“en-AU”,“澳大利亚/悉尼],//官方ISO JS字符串
    “weekStart”:1,//星期一
    “一周”:[
    [null,null],//星期日
    ["08:30","17:30"],
    ["08:30","17:30"],
    ["08:30","17:30"],
    ["08:30","17:30"],
    ["08:30","17:30"],
    [零,零]
    ]
    };
    常量选项={
    小时:“数字”,分钟:“数字”,秒:“数字”,
    时区:workHours.tz[2],
    时区名称:“短”
    };
    让我们现在=新日期();
    console.log(workHours.tz[2],`${now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
    让开始=新日期(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
    让end=newdate(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][1]}:00.000${workHours.tz[0]})
    console.log(“UTC”,开始,结束);//可用时间
    //现在一切正常
    log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(start));
    
    log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(end)) 我会考虑这个格式。示例适用于Sidney中的用户

    { "tz":["+10:00","en-AU","Australia/Sydney"], // official ISO JS strings
      "weekStart":1, // Monday
      "week": [
       [null,null],  // Sunday
       ["8:30","17:30"],
       ["8:30","17:30"],
       ["8:30","17:30"],
       ["8:30","17:30"],
       ["8:30","17:30"],
       [null,null]
      ]
    }
    
    似乎您可能需要存储每个日期的ST和DST,可能还需要存储切换日期,或者将其存储在服务器上

    • 夏时制AEDT:澳大利亚东部夏时制UTC+11
    • 标准时间AEST:澳大利亚东部标准时间UTC+10(当前日期为2020年6月11日)
    如果不想使用矩或,可以使用

    const workHours={“tz”:[“+10:00”,“en-AU”,“澳大利亚/悉尼],//官方ISO JS字符串
    “weekStart”:1,//星期一
    “一周”:[
    [null,null],//星期日
    ["08:30","17:30"],
    ["08:30","17:30"],
    ["08:30","17:30"],
    ["08:30","17:30"],
    ["08:30","17:30"],
    [零,零]
    ]
    };
    常量选项={
    小时:“数字”,分钟:“数字”,秒:“数字”,
    时区:workHours.tz[2],
    时区名称:“短”
    };
    让我们现在=新日期();
    console.log(workHours.tz[2],`${now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
    让开始=新日期(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
    让end=newdate(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][1]}:00.000${workHours.tz[0]})
    console.log(“UTC”,开始,结束);//可用时间
    //现在一切正常
    log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(start));
    
    log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(end))
    所以你只需要
    tz,day,hh:mm hh:mm
    ?@mplungjan是的,但它需要独立于实际的纪元时间。例如,比较我所拥有的星期日数据,无论是现在还是将来,每个星期日的数据都应该相同@mplungjan的例子中没有任何与历元或任何其他特定时间点相关的内容。例如,“美国/纽约”、“周日”、“09:00-17:00”
    @Phil my bad。我以为他的问题是在给出解决方案之前获取更多信息,但我没有意识到这就是解决方案。所以我只保留这些,然后根据时区手动进行转换?我之所以说手动,是因为当以日期格式保存时,转换会自动进行,所以您只需要
    tz,day,hh:mm hh:mm
    ?@mplungjan是的,但它需要独立于实际纪元时间。例如,比较我所拥有的星期日数据,无论是现在还是将来,每个星期日的数据都应该相同@mplungjan的例子中没有任何与历元或任何其他特定时间点相关的内容。例如,“美国/纽约”、“周日”、“09:00-17:00”@Phil my bad。我以为他的问题是在给出解决方案之前获取更多信息,但我没有意识到这就是解决方案。所以我只保留这些,然后根据时区手动进行转换?我之所以说手动,是因为当以日期格式保存时,转换会自动进行。我会小心存储偏移量。您必须使用DSTOk使其保持最新状态谢谢!这让我对通常的做法有了更好的理解@菲尔:那你有什么建议?@Tsabary,比如“美国/安克雷奇”。库可以为您处理这些给定的特定点time@Tsabary我已经更新为包含实际的偏移小时数,以便更容易创建时间并在用户的区域设置中显示时间