import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
import java.util.GregorianCalendar
public class DateTest {
private int year
private int month
private int day
public DateTest() {
}
public DateTest(int year, int month, int day) {
this.year = year
this.month = month
this.day = day
}
// strDate 格式为"yyyy-MM-dd"
public DateTest(String strDate) throws Exception {
this.year = strDate.indexOf(0, 3)
this.month = strDate.indexOf(5, 6)
this.day = strDate.indexOf(8, 9)
}
public int dayOfYear(String strDate) throws Exception {
String pattern = "yyyy-MM-dd"
Date date = new SimpleDateFormat(pattern).parse(strDate)
Calendar cal = new GregorianCalendar()
cal.setTime(date)
return cal.get(Calendar.DAY_OF_YEAR)
}
public int getYear() {
return year
}
public void setYear(int year) {
this.year = year
}
public int getMonth() {
return month
}
public void setMonth(int month) {
this.month = month
}
public int getDay() {
return day
}
public void setDay(int day) {
this.day = day
}
public static void main(String[] args) throws Exception {
DateTest test = new DateTest()
System.out.println(test.dayOfYear("2008-12-23"))
}
}
// 设计一个日期类.要求:// 重载带参数构造函数(int year ,int month, int day)和默认构造函数,前者要求不合要求的数据(年月日超出范围)抛出异常
// 计算出该日是星期几,(网上找公式)。
// 重载“+” *** 作,一个日期对象和天数相加(符合交换律)。
// 重载“-” *** 作,两天日期对象相减返回相差天数。
// 重载“+=” *** 作当前日期加天数
// 重载输入输出 *** 作。
#include
using namespace std
typedef unsigned int UINT
#define CPP_Get(returnType,para,funName) returnType \
get##funName(){ \
return para}
class Date
{
public:
//Constructors and Destructors
Date():year(1970),month(1),day(1){}
Date(UINT y,UINT m,UINT d)//:year(y),month(m),day(d){}
~Date()
//Methods
UINT getWeekday()
void printD()
Date operator +(UINT d)
Date operator -(UINT d)
friend ostream&operator<<(ostream &os,Date &date)//重载输出
friend ostream&operator<<(ostream &os,Date &date)//重载输入
bool isLeapYear()
bool isLeapYear(UINT y)//判断是否闰年
UINT getDays()//距离1970.1.1 星期四
void cnvDays2Date(UINT days)//将填数转换成日期
CPP_Get(UINT,year,Year)
CPP_Get(UINT,month,Month)
CPP_Get(UINT,day,Day)
private:
void set(UINT y,UINT m,UINT d)
UINT year
UINT month
UINT day
typedef enum
{
Sunday = 0,
Monday,
Tuesday,
Wednsday,
Thursday,
Friday,
Saturday
}Weekday
}
Date::Date(UINT y,UINT m,UINT d)
{
set(y,m,d)
}
void Date::printD()
{
cout<<year<<endl
cout<<month<<endl
cout<<day<<endl
}
Date::~Date()
{
}
// 公式中的符号含义如下,
// w:星期;
// c:世纪-1;
// y:年(两位数);
// m:月(m大于等于3,小于等于14,
// 即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,
// 比如2003年1月1日要看作2002年的13月1日来计算);
// d:日;[ ]代表取整,即只要整数部分。
// (C是世纪数减一,y是年份后两位,M是月份,d是日数。
// 1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)
// 蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
// =49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
// =49+[12.25]+5-40+[28.6]
// =49+12+5-40+28
// =54 (除以7余5)
UINT Date::getWeekday()
{
/*
int c,y,m,d,w
//y
y = year%100
//c
c = year/100
//m
switch(month)
{
case 1:
case 2:
m = month+12
break
default:
m = month
break
}
//d
d = day
//w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
w = y + (int)y/4 + (int)c/4 - 2*c + (int)26*(m+1)/10 +d - 1
w %=7
return w*/
int w = 4,ds
ds = getDays()
ds %=7
w = ds +w
return w%7
}
Date Date::operator+(UINT d)
{
UINT days = getDays()
days +=d
cnvDays2Date(days)
return Date(year,month,day)
}
Date Date::operator-(UINT d)
{
UINT days = getDays()
days -=d
cnvDays2Date(days)
return Date(year,month,day)
}
ostream &operator<<(ostream &os,Date &date)
{
os<<date.getYear()<<" "<<date.getMonth()<<" "<<date.getDay()<<endl
return os
}
bool Date::isLeapYear()
{
return isLeapYear(year)
}
bool Date::isLeapYear(UINT y)
{
if((y%4==0&&y%100!=0)||y%400==0)//闰年 366
return true
return false
}
UINT Date::getDays()
{
UINT y,m,d,days = 0,i
y = year - 1970
for(i = 1i <= y i++)
{
if (isLeapYear(1970+i-1))
{
days += 366
}
else
{
days +=365
}
}
//平年
//1 2 3 4 5 6 7 8 9 10 11 12
//31 28 31 30 31 30 31 31 30 31 30 31
//31 59 90 120 151 181 212 243 273 305 334 365
int iArr[12] = {0 ,31 ,59 ,90 ,120 ,151 ,181 ,212 ,243 ,273 ,305 ,334 /*,365*/}
days += iArr[month-1]
if (month>2/*||(month==2&&day==29)*/)//是否闰年多一天
{
bool b = isLeapYear(year)
days +=(UINT)b
}
d = day - 1
days +=d
return days
}
void Date::cnvDays2Date(UINT days)
{
UINT i = 0,y = 1970 ,m = 1,d = 1
//count year
do
{
if (isLeapYear(y))
{
if (days>=366)
{
days -= 366
y++
}
else
break
}
else
{
if(days>=365)
{
days -=365
y++
}
else
break
}
} while (true)
//count month
bool b = isLeapYear(y)
//平年
//1 2 3 4 5 6 7 8 9 10 11 12
//31 28 31 30 31 30 31 31 30 31 30 31
//31 59 90 120 151 181 212 243 273 305 334 365
days -=(UINT)b
int iArr[12] = {0 ,31 ,59 ,90 ,120 ,151 ,181 ,212 ,243 ,273 ,305 ,334 /*,365*/}
i = 0
while(days>=iArr[i])
{
i++
}
m = i
//count day
days -= iArr[i-1]
d = days+1
//如果是闰年,将3月1号变为2月29号
if (m==3&&d==1&&b)
{
m = 2
d = 29
}
//如果是闰年,日期前移一天
else if(m>=3&&d>1&&b)
{
d -=1
}
set(y,m,d)
}
void Date::set(UINT y,UINT m,UINT d)
{
if (m12||d>31)
{
exit(1)
}
if (y<1970)
exit(1)
if((!isLeapYear(y))&&m==2&&d==29)
exit(1)
if (d==31&&(m==4||m== 6||m== 9||m == 11))
{
exit(1)
}
year = y
month = m
day = d
}
int main()
{
//1970.1.1 星期四 ---- 2013.6.13 星期四
Date date(2013,6,13)
//date = date + 15869
date.printD()
cout<<date.getWeekday()<<endl
cout<<date.getDays()<<endl
return 0
}
1、打开UG后处理构造器,在ProcessNavigator窗口中选择要添加加工总时间的加工程序。2、在ProcessParameters窗口中,找到并点击“CreateUserDefinedParameter”按钮,创建一个自定义参数。
3、在d出的“NewParameter”对话框中,输入参数名称为“TotalProcessingTime”,并选择类型为“Real”(即浮点数类型)。
4、点击“OK”按钮创建参数后,将该参数拖动到加工程序中,放置在需要添加加工总时间的位置即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)