注册 登录
发贴工具
查看: 50|回复: 0
打印 上一主题 下一主题

[发贴软件现成脚本] AIWROK软件时间方法集合小结

[复制链接]

2256

主题

2304

帖子

1万

积分

积分
13740
跳转到指定楼层
楼主
AIWROK软件时间方法集合小结

http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
//适用本文档ES5系统安卓 JavaScript引擎Rhino

const 时间 = {
/**
* 获取当前时间戳
* @returns {number} 返回当前的时间戳(毫秒)
* @example
* var timestamp = 时间.当前时间戳();
* printl(timestamp); // 输出类似: 1677649423000
*/
当前时间戳: function() {
return Date.now();
},

/**
* 格式化时间为指定格式
* @param {Date|number|string} date 要格式化的日期,可以是Date对象、时间戳或日期字符串
* @param {string} format 输出格式,默认为"YYYY-MM-DD HH:mm:ss"
* @returns {string|null} 成功返回格式化后的时间字符串,失败返回null
* @example
* // 示例1:格式化当前时间
* var now = new Date();
* var str = 时间.格式化(now);
* printl(str); // 输出: "2024-01-20 15:30:45"
*
* // 示例2:自定义格式
* var str = 时间.格式化(new Date(), "YYYY年MM月DD日");
* printl(str); // 输出: "2024年01月20日"
*/
格式化: function(date, format) {
try {
// 设置默认格式
format = format || "YYYY-MM-DD HH:mm:ss";

// 参数验证
if (!date) {
console.error("[时间.格式化] 错误:date参数未定义");
return null;
}

// 转换为Date对象
var dateObj;
if (date instanceof Date) {
dateObj = date;
} else if (typeof date === 'number' || typeof date === 'string') {
dateObj = new Date(date);
} else {
console.error("[时间.格式化] 错误:date参数类型不正确");
return null;
}

// 验证日期是否有效
if (isNaN(dateObj.getTime())) {
console.error("[时间.格式化] 错误:无效的日期");
return null;
}

// 格式化函数
var formatMap = {
YYYY: dateObj.getFullYear(),
MM: String(dateObj.getMonth() + 1).padStart(2, '0'),
DD: String(dateObj.getDate()).padStart(2, '0'),
HH: String(dateObj.getHours()).padStart(2, '0'),
mm: String(dateObj.getMinutes()).padStart(2, '0'),
ss: String(dateObj.getSeconds()).padStart(2, '0'),
SSS: String(dateObj.getMilliseconds()).padStart(3, '0')
};

return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS/g, function(match) {
return formatMap[match];
});
} catch (error) {
console.error("[时间.格式化] 错误:" + error);
return null;
}
},

/**
* 计算两个日期之间的时间差
* @param {Date|number|string} date1 第一个日期
* @param {Date|number|string} date2 第二个日期
* @param {string} unit 返回的时间单位,可选值:years, months, days, hours, minutes, seconds, milliseconds
* @returns {number|null} 成功返回时间差,失败返回null
* @example
* // 示例1:计算两个日期之间的天数差
* var date1 = new Date('2024-01-01');
* var date2 = new Date('2024-02-01');
* var diff = 时间.时间差(date1, date2, 'days');
* printl(diff); // 输出: 31
*
* // 示例2:计算小时差
* var diff = 时间.时间差(date1, date2, 'hours');
* printl(diff); // 输出: 744
*/
时间差: function(date1, date2, unit) {
try {
// 设置默认单位
unit = unit || "milliseconds";

// 参数验证
if (!date1 || !date2) {
console.error("[时间.时间差] 错误:日期参数未定义");
return null;
}

// 转换为Date对象
var d1 = new Date(date1);
var d2 = new Date(date2);

// 验证日期是否有效
if (isNaN(d1.getTime()) || isNaN(d2.getTime())) {
console.error("[时间.时间差] 错误:无效的日期");
return null;
}

// 计算毫秒差值
var diff = Math.abs(d2.getTime() - d1.getTime());

// 根据单位转换
var conversions = {
milliseconds: 1,
seconds: 1000,
minutes: 1000 * 60,
hours: 1000 * 60 * 60,
days: 1000 * 60 * 60 * 24,
months: 1000 * 60 * 60 * 24 * 30.436875, // 平均每月天数
years: 1000 * 60 * 60 * 24 * 365.25 // 平均每年天数
};

if (!conversions[unit]) {
console.error("[时间.时间差] 错误:无效的时间单位");
return null;
}

return Math.floor(diff / conversions[unit]);
} catch (error) {
console.error("[时间.时间差] 错误:" + error);
return null;
}
}
};

// 示例1:获取当前时间戳
var timestamp = 时间.当前时间戳();
printl("当前时间戳:", timestamp);

// 示例2:格式化当前时间
var now = new Date();
var formattedDate = 时间.格式化(now);
printl("格式化当前时间:", formattedDate);

// 示例3:自定义格式化
var customFormat = 时间.格式化(now, "YYYY年MM月DD日 HH时mm分ss秒");
printl("自定义格式:", customFormat);

// 示例4:计算时间差
var date1 = new Date('2024-01-01');
var date2 = new Date('2024-02-01');
var daysDiff = 时间.时间差(date1, date2, 'days');
printl("相差天数:", daysDiff);

var hoursDiff = 时间.时间差(date1, date2, 'hours');
printl("相差小时:", hoursDiff);

1. 基础时间获取方法

/**
 * 获取当前时间戳
 */
当前时间戳: function() {
    return Date.now();
}

这是最基础的方法,返回当前时间的毫秒级时间戳。常用于记录时间点或计算时间差。

/**
 * 获取当前时间
 */
当前时间: function() {
    return new Date();
}

返回当前的Date对象,可以用于后续的时间处理。

2. 时间等待和休眠方法

/**
 * 休眠指定的毫秒数(同步方式)
 */
休眠: function(ms) {
  try {
    // 参数验证
    if (typeof ms !== 'number' || ms < 0) {
      console.error("[时间.休眠] 错误:参数必须是非负数");
      return;
    }

    var start = new Date().getTime();
    while (new Date().getTime() < start + ms) {
      // 空循环等待
    }
  } catch (error) {
    console.error("[时间.休眠] 错误:" + error);
  }
}

这是一个同步的休眠方法,会阻塞执行指定的毫秒数。注意:这会阻塞主线程。

/**
 * 等待指定时间(异步方式)
 */
等待指定时间: function(ms) {
  try {
    if (typeof ms !== 'number' || ms < 0) {
      console.error("[时间.等待指定时间] 错误:ms必须是非负数");
      return Promise.reject("ms必须是非负数");
    }

    return new Promise(function(resolve) {
      setTimeout(resolve, ms);
    });
  } catch (error) {
    console.error("[时间.等待指定时间] 错误:" + error);
    return Promise.reject(error);
  }
}

这是异步版本的等待,返回Promise,不会阻塞主线程。推荐使用这个方法而不是休眠

3. 时间格式化和转换

/**
 * 格式化时间为指定格式
 */
格式化: function(date, format) {
  try {
    format = format || "YYYY-MM-DD HH:mm:ss";

    // ... 参数验证 ...

    var formatMap = {
      YYYY: dateObj.getFullYear(),
      MM: String(dateObj.getMonth() + 1).padStart(2, '0'),
      DD: String(dateObj.getDate()).padStart(2, '0'),
      HH: String(dateObj.getHours()).padStart(2, '0'),
      mm: String(dateObj.getMinutes()).padStart(2, '0'),
      ss: String(dateObj.getSeconds()).padStart(2, '0'),
      SSS: String(dateObj.getMilliseconds()).padStart(3, '0')
    };

    return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS/g, function(match) {
      return formatMap[match];
    });
  } catch (error) {
    console.error("[时间.格式化] 错误:" + error);
    return null;
  }
}

这个方法可以将日期格式化为指定的字符串格式。支持的格式标记:

  • YYYY: 年份
  • MM: 月份(01-12)
  • DD: 日期(01-31)
  • HH: 小时(00-23)
  • mm: 分钟(00-59)
  • ss: 秒(00-59)
  • SSS: 毫秒(000-999)

4. 时间组件获取

获取年: function(date) {
  try {
    var dateObj = date ? new Date(date) : new Date();
    return dateObj.getFullYear();
  } catch (error) {
    console.error("[时间.获取年] 错误:" + error);
    return null;
  }
}

类似的还有获取月获取时获取分获取秒获取毫秒方法,它们都:

  • 接受可选的日期参数,不传则使用当前时间
  • 返回对应的时间组件
  • 包含错误处理

5. 高级功能

/**
 * 倒计时秒
 */
倒计时秒: function(seconds, callback, doneCallback) {
  try {
    var remainingSeconds = seconds;

    // 立即执行一次回调
    if (typeof callback === 'function') {
      callback(remainingSeconds);
    }

    var intervalId = setInterval(function() {
      remainingSeconds--;

      if (typeof callback === 'function') {
        callback(remainingSeconds);
      }

      if (remainingSeconds <= 0) {
        clearInterval(intervalId);
        if (typeof doneCallback === 'function') {
          doneCallback();
        }
      }
    }, 1000);

    return intervalId;
  } catch (error) {
    console.error("[时间.倒计时秒] 错误:" + error);
    return null;
  }
}

这是一个倒计时功能:

  • 每秒调用一次callback
  • 传入剩余秒数
  • 倒计时结束时调用doneCallback
  • 返回intervalId供取消使用
/**
 * 等待指定字符出现
 */
等待指定字符出现: function(checkFn, timeout, interval) {
  try {
    if (typeof checkFn !== 'function') {
      console.error("[时间.等待指定字符出现] 错误:checkFn必须是函数");
      return Promise.reject("checkFn必须是函数");
    }

    timeout = timeout || 5000;
    interval = interval || 100;

    return new Promise(function(resolve, reject) {
      if (checkFn()) {
        resolve();
        return;
      }

      var startTime = Date.now();
      var intervalId = setInterval(function() {
        if (Date.now() - startTime > timeout) {
          clearInterval(intervalId);
          reject("等待超时");
          return;
        }

        if (checkFn()) {
          clearInterval(intervalId);
          resolve();
        }
      }, interval);
    });
  } catch (error) {
    console.error("[时间.等待指定字符出现] 错误:" + error);
    return Promise.reject(error);
  }
}

这是一个高级的等待功能:

  • 接受一个检查函数
  • 定期检查条件是否满足
  • 支持超时设置
  • 返回Promise

6. 错误处理特点

所有方法都采用了统一的错误处理模式:

  1. try-catch 包裹主要逻辑
  2. 详细的参数验证
  3. 统一的错误日志格式
  4. 失败时返回null或reject Promise

7. 使用示例

// 基础用法
var now = 时间.当前时间();
var formatted = 时间.格式化(now, "YYYY年MM月DD日");

// 异步等待
时间.等待指定时间(1000).then(function() {
  console.log("1秒后执行");
});

// 倒计时
时间.倒计时秒(5, 
        function(remain) { console.log(remain + "秒"); },
        function() { console.log("倒计时结束"); }
       );

// 等待条件
时间.等待指定字符出现(
  function() { return 屏幕文字.indexOf("成功") >= 0; },
  5000
).then(function() {
  console.log("找到了");
});

这个时间工具库设计得非常实用,既有基础的时间处理功能,也有高级的异步等待功能,错误处理完善,使用方便。您觉得还需要我解释哪部分更详细吗?

AIWROK软件时间方法集合小结 群发软件发帖工具

AIWROK软件时间方法集合小结 群发软件发帖工具   AIWROK软件时间方法集合小结 群发软件发帖工具


untoIOS苹果TabView视图和Horizontal水平布局控件nextAIWORK类语聊智能聊天机器人带意图识别例子演示
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖